Mar*_*eli 5 sql-server stored-procedures
我们在ANSI_NULLS设置和计算列方面存在一些问题,我们有大量的存储过程
SET ANSI_NULLS OFF
Run Code Online (Sandbox Code Playgroud)
我们想要将它们全部改为
SET ANSI_NULLS ON
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法可以做到这一点,或者我必须将所有SP提取到脚本,更改它并再次运行它以删除并重新创建所有SPa
您必须编写所有过程的脚本,并在启用 ANSI_NULLS 的情况下重新创建它们。
如果我有很多事情要做,我可能会向我的客户端应用程序添加一个功能。
伪代码:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
我有关于如何在SQL Server 上以编程方式获取存储过程的 SQL 的代码:如何在没有 DMO/SMO 的情况下生成对象脚本?
但通常我只会使用Enterprise Manager,从存储过程列表的顶部开始:
我的剪贴板包含:
SET ANSI_NULLS ON
GO
Run Code Online (Sandbox Code Playgroud)
如果您不幸被 SSMS 困住,那么您就可以使用 POS、IIRC。TWSS。
| 归档时间: |
|
| 查看次数: |
6934 次 |
| 最近记录: |