Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server数据库项目:为什么不支持命令执行_Sql_Sql Server_Visual Studio_Tsql - Fatal编程技术网

SQL Server数据库项目:为什么不支持命令执行

SQL Server数据库项目:为什么不支持命令执行,sql,sql-server,visual-studio,tsql,Sql,Sql Server,Visual Studio,Tsql,我正在尝试为Visual Studio SQL数据库项目复制预部署脚本中的文件 :!!copy $(DataFileDirectory)\data.csv $(DataDestinationDirectory) 我发现这产生了错误: SQL72007:语法检查失败“附近的语法不正确”。在批处理中靠近:':!!抄袭 因此,我尝试简化测试,并尝试: :!! dir 这也失败了: SQL72007:语法检查失败“附近的语法不正确”。在批处理中靠近:':!!迪尔 当我尝试时,它失败了: !! dir

我正在尝试为Visual Studio SQL数据库项目复制预部署脚本中的文件

:!!copy $(DataFileDirectory)\data.csv $(DataDestinationDirectory)
我发现这产生了错误:

SQL72007:语法检查失败“附近的语法不正确”。在批处理中靠近:':!!抄袭

因此,我尝试简化测试,并尝试:

:!! dir
这也失败了:

SQL72007:语法检查失败“附近的语法不正确”。在批处理中靠近:':!!迪尔

当我尝试时,它失败了:

!! dir
我能够执行以下命令:

:r .\myfile.sql 
我注意到每当我执行
时都会出现以下错误:,

72006:致命脚本错误:不支持命令执行


为什么不支持命令执行(
:!!

当然,只有SSDT的设计者才能真正回答这个问题,但你可以做出一个有根据的猜测:这会对系统安全造成太大的危害。它允许您在运行SQL server本身的用户的帐户下,在数据库服务器的操作系统上运行任意命令

sqlcmd.exe
命令允许禁用
:出于同样的原因,使用
-X
命令行选项编辑
命令

如果您确实需要在脚本中运行操作系统命令,您仍然可以回退到
xp\u cmdshell
,这当然也有问题,但至少服务器管理员可以决定是否允许这样做


还有更多的SQLCMD语法选项,SSDT部署前或部署后脚本都不支持(例如,或者,看起来)。因此,另一种解释是,为了部署脚本的目的,
:r
:setvar
命令被认为是足够的。

当然,这只能由SSDT的设计者来回答,但你可以做出一个有根据的猜测:这会对系统安全造成太大的危害。它允许您在运行SQL server本身的用户的帐户下,在数据库服务器的操作系统上运行任意命令

sqlcmd.exe
命令允许禁用
:出于同样的原因,使用
-X
命令行选项编辑
命令

如果您确实需要在脚本中运行操作系统命令,您仍然可以回退到
xp\u cmdshell
,这当然也有问题,但至少服务器管理员可以决定是否允许这样做

还有更多的SQLCMD语法选项,SSDT部署前或部署后脚本都不支持(例如,或者,看起来)。因此,另一种解释是,对于部署脚本而言,
:r
:setvar
命令被认为是足够的