我现在创建一个游标我想在sql server作业调度程序中调用该游标。对于SP,您需要致电EXEC <sp name>
。如何调用Cursor?
当我尝试将T-SQL脚本保存到作业中时,出现以下错误:
TITLE: Microsoft SQL Server Management Studio
------------------------------
Creating an instance of the COM
component with CLSID {AA40D1D6-CAEF-4A56-B9BB-D0D3DC976BA2} from the
IClassFactory failed due to the following error: c001f011.
(Microsoft.SqlServer.ManagedDTS)
------------------------------
ADDITIONAL INFORMATION: Creating an
instance of the COM component with CLSID
{AA40D1D6-CAEF-4A56-B9BB-D0D3DC976BA2} from the IClassFactory failed
due to the following error: c001f011.
(Microsoft.SqlServer.ManagedDTS)
------------------------------
BUTTONS: OK
------------------------------
答案 0 :(得分:8)
SQL代理作业步骤可以有多种类型:如果选择T-SQL步骤类型,则应该能够将T-SQL脚本内容直接放在作业步骤详细信息/内容中。对于涉及游标或任何其他T-SQL的脚本,这应该没有什么不同。
Cursor不是像存储过程那样的持久数据库对象,只要您创建它就调用它;游标是在单个SQL连接的上下文中创建,使用和销毁的临时对象。通常是这样的:
DECLARE XXX CURSOR
FOR
SELECT Something
FROM Somewhere
OPEN XXX
FETCH NEXT FROM XXX
INTO @A
WHILE @@FETCH_STATUS = 0
BEGIN
--Do something here
FETCH NEXT FROM XXX
INTO @A
END
CLOSE XXX
DEALLOCATE XXX
如果您有一个使用游标的T-SQL脚本,那么您只需将整个T-SQL脚本复制到SQL代理作业中。
如果这不起作用,请提供更多信息,说明您尝试过的内容,遇到的问题类型,收到的错误消息的详细信息等。
提供SSMS错误详细信息后更新:
我发现在SSMS 2008 R2中(至少在64位计算机上),SQL代理作业编辑UI有时会开始抛出您刚才提供的错误。发生这种情况时,有时会出现错误,或者有时当您双击要编辑的作业步骤时,没有任何反应。
根据我的经验,如果您完成关闭SSMS(关闭所有已打开的作业,关闭活动监视器,关闭ssms),再次启动它,然后直接进入您想要编辑的作业,这些问题就会消失。 / p>
尝试这样做,如果您仍有问题,请描述您正在采取的步骤,T-SQL脚本的大小以及您可以考虑添加的任何其他信息。
参考此错误,并确认Microsoft的错误:http://connect.microsoft.com/SQLServer/feedback/details/557402/ssms-can-no-longer-create-or-edit-job-steps
此时唯一已知的解决方法是完全关闭ssms,再次打开它,然后编辑您要编辑的一个作业(之后,您可能会再次出现错误并需要再次关闭)
答案 1 :(得分:0)