0

首先,我是新人。我在 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 的路径?

4

1 回答 1

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 文件名作为参数传递,请参阅
如何使用 sqlcmd.exe 调用带有参数的存储过程?

于 2013-03-29T18:31:52.407 回答