需要帮助:为批量插入创建存储过程

时间:2013-03-29 17:27:29

标签: stored-procedures batch-file bulkinsert

首先,我是新人。我在SQL Server 2008 R2上。我有一个可用的批量插入脚本。我尝试创建一个存储过程,然后将其另存为storedprocedure.sql。最终,我需要一个.bat文件来启动批量插入。我有另一个可以运行外部程序的程序,但它只能看到.bat.exe

所以,这是我的批量插入脚本:

Bulk Insert MyDatabase.dbo.cust_adj
From 'C:\path\importformat.txt' 
With 
(
   FieldTerminator= '|', 
   Rowterminator= '\n' 
) 
Go

(this works)

然后我尝试创建存储过程:

Create Procedure LoadDailyAdjReport
AS
    Bulk Insert MyDatabase.dbo.cust_adj 
    From 'C:\path\importformat.txt' 
    With 
    ( 
       FieldTerminator= '|', 
       Rowterminator= '\n' 
    ) 
Go 

它说它成功了......但我不知道怎么检查它。

然后我尝试制作.bat文件并尝试:

@echo off
sqlcmd -S MyServer\MyDataBase -i C:\mypath\Load_Daily_Adjustment.sql

它不起作用。起初我以为这是我的.bat指令(可能不对),但后来我想知道我的存储过程是否正确。问题是我真的不太了解这个问题。有人可以就这应该是什么提供一些建议或指示吗?

非常感谢你。

好的,在SQL Server上,这个.bat文件有效:

sqlcmd -S MyServerName -E -d MyDatabase -Q“EXEC MyStoredProcedure”

服务器让我们说:\ Server1 \ 我运行bat文件的程序在另一台服务器上。该文件是共享的,用户具有SQL安全性,文件夹,编程等等。

如何将.bat文件更改为程序服务器?

因此,在Server2上,我想拥有访问并打开Server1上的.bat的bat文件。为此,我是否需要更改.bat文件以使路径为\ Server1 \ PathName \ File.bat?

1 个答案:

答案 0 :(得分:0)

执行SP LoadDailyAdjReport的SQL将是EXEC LoadDailyAdjReport - 所以在ypur批处理文件SQLCMD中尝试这个:

sqlcmd -S YourServerName -E -d YourDataBaseName -Q "EXEC LoadDailyAdjReport"

( - E使用可信连接(Windows登录)更多细节 http://msdn.microsoft.com/en-us/library/ms162773.aspx

如果您想通过传递.txt文件名作为参数,请参阅
How do I call a stored procedure with arguments using sqlcmd.exe?