Tsql 从文件中读取更新SP定义并运行动态SQL,处理EOL

Tsql 从文件中读取更新SP定义并运行动态SQL,处理EOL,tsql,bulk,Tsql,Bulk,您好,我需要为源位于外部物理文件中的SP创建新定义(从其他TFS站点导入,有1000多个)。我以为我第一次就解决了这个问题。 但是现在我看到了另一个问题,如果您将我的文件读入单行,我得到了一个错误“CREATE/ALTER PROCEDURE”必须是查询批处理中的第一条语句。我需要将行尾放入我的@sql 我现在看到的唯一解决方案是将所有行读入具有多行的表中,然后将它们连接起来?这相当复杂。有没有办法更简洁地处理\n'?下面的代码产生错误GO应单独位于单独的行上。我的全局任务是读取100多个文件并

您好,我需要为源位于外部物理文件中的SP创建新定义(从其他TFS站点导入,有1000多个)。我以为我第一次就解决了这个问题。
但是现在我看到了另一个问题,如果您将我的文件读入单行,我得到了一个错误
“CREATE/ALTER PROCEDURE”必须是查询批处理中的第一条语句。
我需要将行尾放入我的
@sql

我现在看到的唯一解决方案是将所有行读入具有多行的表中,然后将它们连接起来?这相当复杂。有没有办法更简洁地处理
\n'
?下面的代码产生错误
GO
应单独位于单独的行上。我的全局任务是读取100多个文件并在其中运行代码。 我没有任何访问源数据库的权限,只需要处理平面文件。没有任何选项可以右键单击数据库等

我认为这可能是一种错误的方式,我可以将这些文件引入TFS/SQL项目,并从TFS中做一些事情,可能应该是应用新代码的某种方式…(?)

CREATE TABLE#imp(Col varchar(max))
批量插入#imp
来自“//TFSNetwork/log/Install/sp_Test02.sql”
使用(rowdterminator='\nzzzz')--使用
sqlcmd
可以为.bat文件中的所有文件编写多个条目,并在单击中运行。这样,所有CR/LF都可以正常工作。只需为您的数据库获取足够的权限。 下面是simple.bat文件的内容。可以在.sql中使用通用
创建或更改过程

 @echo off
sqlcmd -S dbServ10 -U UserAcct -P UserPsw -i "//TFSNetwork/log/Install/sp_Test01.sql"
 sqlcmd -S dbServ10 -U UserAcct -P UserPsw -i "//TFSNetwork/log/Install/sp_Test02.sql"
...
...
 sqlcmd -S dbServ10 -U UserAcct -P UserPsw -i "//TFSNetwork/log/Install/sp_Test100.sql"

只是尝试了
REPLACE(@sql,'GO','GO'+CHAR(10))
来插入下线字符,仍然不起作用。看起来我需要将所有行加载到单独的行中,并以某种方式填充它们。为什么将
Char(10)
插入
GolfScores
会有帮助?在对大量代码(或数据)进行“简单”替换时要小心。Tx Habo,对不起,不清楚您的建议,我尝试了所有组合。它仅适用于打印,但不适用于SELECT或EXEC。SSM用空间代替了这些。
 @echo off
sqlcmd -S dbServ10 -U UserAcct -P UserPsw -i "//TFSNetwork/log/Install/sp_Test01.sql"
 sqlcmd -S dbServ10 -U UserAcct -P UserPsw -i "//TFSNetwork/log/Install/sp_Test02.sql"
...
...
 sqlcmd -S dbServ10 -U UserAcct -P UserPsw -i "//TFSNetwork/log/Install/sp_Test100.sql"