【发布时间】:2012-03-09 00:06:48
【问题描述】:
我正在尝试监视数据库的镜像副本。我正在运行一个脚本,该脚本也能够执行其他检查,其中一些与导致我出现问题的那个非常相似。
有效的代码:
conn.execute "if object_id('tempdb..#logs') is not null drop table tempdb..#logs"
conn.execute "create table #logs (...'a lot of variables)"
conn.execute "insert into #logs exec('dbcc sqlperf (logspace)')"
不起作用的代码:
conn.execute "if object_id('tempdb..#mirrors') is not null drop table tempdb..#mirrors"
conn.execute "create table #mirrors (...'alot of variables)"
conn.execute "insert into #mirrors exec('msdb..sp_dbmmonitorresults "&db&",1,0')"
在第二个示例中尝试执行插入时出现无效对象错误。包含所有变量的字符串是否可能很长?
我以前从未使用过 Visual Basic,所以这可能是显而易见的。
我尝试在 SQL Server 管理工作室中运行代码,它运行良好。
有人有什么想法吗?
G
【问题讨论】:
-
第一组VB代码按原样成功运行还是只有在SSMS中运行SQL代码才有效?
-
@Tom H 。它按原样运行。第二个示例仅适用于 SSMS
-
什么是
db?它是唯一的变量。 -
@marc 。是的,它是一个带有数据库名称的变量。我检查了发送的字符串,它应该是这样的。