我们在 ANSI_NULLS 设置和计算列方面存在一些问题,并且我们有大量的存储过程
SET ANSI_NULLS OFF
我们想把它们全部改成
SET ANSI_NULLS ON
有没有一种简单的方法可以做到这一点,或者我必须将所有 SP 提取到脚本中,更改它并再次运行它以删除并重新创建所有 SPa
您必须编写所有过程的脚本,并在启用 ANSI_NULLS 的情况下重新创建它们。
如果我有a lot为此,我可能会向我的客户端应用程序添加一个功能。
伪代码:
procedure FixAllStoredProcedureAnsiNullness(connection)
{
Strings spNames = GetStoredProcedureNames(connection);
foreach spName in spNames
{
String sql = GetStoredProcedureSQL(connection, spName);
//turn on option for remainder of connection
connection.ExecuteNoRecords("SET ANSI_NULLS ON");
BeginTransaction(connection);
try
connection.ExecuteNoRecords("DROP PROCEDURE "+spName);
connection.ExecuteNoRecords(sql);
CommitTranasction(connection);
except
RollbackTransaction(connection);
raise;
end;
}
}
我有关于如何以编程方式获取存储过程的 SQL 的代码SQL Server:如何在没有DMO/SMO的情况下生成对象脚本?
但通常我只会使用企业经理,从存储过程列表的顶部开始:
- Return
-
Ctrl+Home
-
Ctrl+V
- Click OK
- Down
- Goto 1
我的剪贴板包含:
SET ANSI_NULLS ON
GO
如果您不幸被 SSMS 困住,那么您就可以使用 POS、IIRC。 TWSS。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)