您好我正在尝试运行从另一个数据库生成的文件的bcp导入到我的数据库
(不要问,在我被否决的长篇故事中)。
所以无论如何我有我需要传递给bcpImport的所有常量,我有一个在C#中执行此操作的类,但我需要通过每晚的计划运行来完成此操作。因为我从来没有从SQL脚本中运行命令行(只是反过来,从命令行运行脚本)我想知道是否有人可以给我任何指针。
MyTable in \"C:\\example\\location\\PartInfo.txt\" -S SQLSERVER2008 -T -f \"example\\location\\FormatFile.xml\"
为了完整性,我提供了一个我希望运行的命令行的例子
答案 0 :(得分:2)
您需要XP_cmdshell,但可能必须是enabled first。
编辑:
由于OP没有管理员权限,咖啡提供没有帮助,也许创建一个运行命令的工作可能是一个合理的解决方案,最多this Link这应该正常工作。
Idea正在创建一个让它运行命令然后将其删除的作业,该作业看起来像:
DECLARE @jobID uniqueidentifier, @cmd varchar(1000)
SET @cmd = 'the desired shell command'
EXEC msdb.dbo.sp_add_job @job_name = '_JobName', @enabled = 1, @start_step_id = 1, @owner_login_name='sa', @job_id = @jobID OUTPUT
EXEC msdb.dbo.sp_add_jobstep @job_id = @jobID, @step_name = 'Description', @step_id = 1, @subsystem = 'CMDEXEC', @command = @cmd
EXEC msdb.dbo.sp_add_jobserver @job_id = @jobID
EXEC msdb.dbo.sp_start_job @job_id = @jobID, @output_flag = 0
WAITFOR DELAY '000:00:05' -- Give the job a chance to complete
IF EXISTS (SELECT name FROM msdb.dbo.sysjobs WHERE name = '_JobName')
BEGIN
EXEC msdb.dbo.sp_delete_job @job_name = '_JobName'
END