Solved

SQL 2008 T SQL output Stored Procedure to .txt

Posted on 2013-01-20
7
610 Views
Last Modified: 2013-05-02
Using SQL 2008, I'm trying to use a Stored Procedure to write the contents of a SP to a .txt file. I can select the SP definition and can write content to .txt no problem. When trying to write the SP definition to .txt, assigned to a @str varchar(max), nothing is written to the file.

DECLARE @str varchar(max), @filename varchar(max), @ExportTXT varchar(max)
SET @filename = 'c:\test.txt'
SET @str = (select top 1 definition from sys.sql_modules, information_schema.routines where LEFT(information_schema.routines.routine_definition,200) = LEFT(sys.sql_modules.definition,200)  

SET @ExportTXT = 'echo foo: ' + '>>' + @filename
EXEC master..xp_cmdshell @ExportTXT

SET @ExportTXT = 'echo ' + @str + '>>' + @filename
EXEC master..xp_cmdshell @ExportTXT

Open in new window


The above writes the line 'foo:' but nothing after it.

Related to this question, how do I force a line break without using a new echo command + call to EXEC master..xp_cmdshell. I'd rather write once to the .txt file than multiple times.
0
Comment
Question by:drl1
  • 3
  • 3
7 Comments
 
LVL 24

Expert Comment

by:DBAduck - Ben Miller
ID: 38799812
Try something like this.  When using Echo, you need to have the string enclosed in " "

SET @ExportTXT = 'echo "' + @str + '" >>' + @filename
EXEC master..xp_cmdshell @ExportTXT 

Open in new window

0
 

Author Comment

by:drl1
ID: 38815821
The @str variable is defined as a string, is already encapsulated in single quotes in T SQL (i.e. a string) and works fine if I assign a short string such as 'foobar' (without single quotes) to @str and don't use your suggested double quotes, so that's not the issue.

I think i've narrowed this down to the size of the Stored Proc being too large to be held in the @str variable despite this variable being defined as varchar(max). The SP is around 40,000 characters including blank spaces.
0
 
LVL 24

Expert Comment

by:DBAduck - Ben Miller
ID: 38815858
Sorry, I did not read that it was the "contents" of the stored proc.  You have a limit of 256 characters on that command line. So 40,000 will be outside that range.
0
Use Case: Protecting a Hybrid Cloud Infrastructure

Microsoft Azure is rapidly becoming the norm in dynamic IT environments. This document describes the challenges that organizations face when protecting data in a hybrid cloud IT environment and presents a use case to demonstrate how Acronis Backup protects all data.

 

Author Comment

by:drl1
ID: 38815957
Within the Echo command line? That would explain it. How can I dump 40k chars to a txt file or more simply just have the stored proc save a copy of itself as a txt file?
0
 
LVL 35

Expert Comment

by:David Todd
ID: 38815983
Hi,

I'm wondering if using the SQL command mode may help here. Its not a stored procedure, but would be a sql script that can be scheduled and automated.

Just a thought

Regards
  David
0
 

Author Comment

by:drl1
ID: 38815997
Would the SP call the sql script which in turn saves a copy of the SP to txt? It's not something that I need scheduling as the dump to txt needs to run at each point that the SP is fired, which is currently a manual process.
0
 
LVL 24

Accepted Solution

by:
DBAduck - Ben Miller earned 500 total points
ID: 38816001
You could use something like this:

SET @str = 'sqlcmd -E -Sinstancename -Q "EXEC sp_helptext ''' + @procname + '''" -o "' + @filename + '"'
EXEC master..xp_cmdshell @str

Open in new window

0

Featured Post

Use Case: Protecting a Hybrid Cloud Infrastructure

Microsoft Azure is rapidly becoming the norm in dynamic IT environments. This document describes the challenges that organizations face when protecting data in a hybrid cloud IT environment and presents a use case to demonstrate how Acronis Backup protects all data.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Managing Columnstore Indexes 2 30
get column names from table in vb.net 8 30
Webservices in T-SQL 3 31
sql how to count case when 4 18
This is basically a blog post I wrote recently. I've found that SARGability is poorly understood, and since many people don't read blogs, I figured I'd post it here as an article. SARGable is an adjective in SQL that means that an item can be fou…
How to leverage one TLS certificate to encrypt Microsoft SQL traffic and Remote Desktop Services, versus creating multiple tickets for the same server.
Microsoft Active Directory, the widely used IT infrastructure, is known for its high risk of credential theft. The best way to test your Active Directory’s vulnerabilities to pass-the-ticket, pass-the-hash, privilege escalation, and malware attacks …
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …

803 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question