2013-02-04 31 views
0

我有超过100个.sql文件要在sql server 2008 R2上执行。但我不想手动执行它。所以,我搜索了可能的解决方案,发现我可以使用powershell来执行这些脚本,但我从未使用过PowerShell。我发现下面提及命令 -如何使用PowerShell在SQL Server 2008中执行多个.sql文件?

Get-ChildItem ".\Stored Procedures\*.sql" | ForEach-Object { sqlcmd -S ServerName -d DatabaseName -E -i $_.FullName }

我与我的参数 -

Get-ChildItem "C:\tables\*.sql" | ForEach-Object { sqlcmd -S 10.50.102.124 -d falhpdv1stage -E -i $_.FullName }

取代它,我刷新我的数据库执行此命令后,但我没能看到新执行表?我错过了什么吗?

+0

您是否检查过其中一个命令是否有效?问题可能是从SQL文件中的语法错误到机器上的验证问题,从而导致IP地址模糊不清。 –

+0

请写一个日志文件,以便知道错误。将这段代码添加到行'|的末尾>> execSp.log' – Hiten004

+0

为什么不将它们转换为单个存储过程? –

回答

0

假设你有,你正在运行的脚本在计算机上安装的管理工作室:

add-pssnapin SqlServerCmdletSnapin100; 
Get-ChildItem "C:\tables\*.sql" | ForEach-Object { invoke-sqlcmd -serverinstance 10.50.102.124 -database falhpdv1stage -inputfile $_.FullName } 

这还假定其他一切都是正确的 - 正确书写的查询,对数据库的相应权限,正确的服务器IP &数据库名称等

+0

我能够在一个环境中执行该命令,但无法在其他环境中打开PowerShell(在此Windows身份验证中使用但是在前面的一个中使用了sql server认证)。 – Praveenks

+0

您可以将'-username'和'-password'参数传递给invoke-sqlcmd以使用SQL身份验证。任何当前的Windows服务器都应安装并可用PowerShell。 – alroc

相关问题