使用 BULK 从网络文件导入 Proc 定义

Import Proc definition from network file with BULK

我正在尝试通过提供的物理文件在 MS SQL 中创建 1000 多个 Proc,作为位于 Network 上的遗留迁移的一部分。现在我计划使用带有动态 SQL 的 sp 来遍历所有这些,就像下面的片段一样,我在 BULK ROWTERMINATOR 方面遇到了问题,所以我只是用一堆 ZZZZ 来模拟它,还有其他正确的设置方法吗它到 NONE,因此所有字符串都将加载到 运行 的单行中。我的字段也使用 Nvarchar(Max)。

DROP TABLE IF EXISTS #imp;
CREATE TABLE #imp (Col varchar(max))
BULK INSERT  #imp
FROM '//TFSNetwork/log/Install/sp_Test02.sql'
  WITH (ROWTERMINATOR = '\nzzzzzzzzzZZZ')      ---<< ?????
select top 1 @Sql = Col from #imp
 EXEC (@sql);

----------------------------------------------------sp_Test02.sql
CREATE PROCEDURE [dbo].[sp_Test]   
AS  
BEGIN  
    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
    SET NOCOUNT ON;
    SELECT GETDATE() AS TS
END

-----------------------------------------------------------------

Load whole file into single row/column

ROWTERMINATOR = '\n' 是默认使用的,这就是为什么你一旦完全省略它就会得到它。不要认为我们可以或将要改变这种行为,而是使用你的 Z 组合)。 同样的事情可以用另一个 BULK 来完成,在这种情况下不需要任何 ROWTERM 选项。

declare @myFile varchar(max) 
select @myFile = BulkColumn
from openrowset(BULK '//Network/Path/Test02.sql', single_blob) x;
SELECT @myFile