gpt4 book ai didi

sql-server - 更改数据库中所有存储过程的 ANSI_NULLS 设置

转载 作者:行者123 更新时间:2023-12-02 13:48:32 30 4
gpt4 key购买 nike

我们在 ANSI_NULLS 设置和计算列方面存在一些问题,并且我们有大量的存储过程

SET ANSI_NULLS OFF

我们想将它们全部更改为

SET ANSI_NULLS ON

有没有一种简单的方法可以做到这一点,或者我必须将所有 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;
}
}

我有关于如何以编程方式获取存储过程的 SQL 的代码 SQL Server: How to generate object scripts without DMO/SMO?

但通常我只会使用企业管理器,从存储过程列表的顶部开始:

  1. 返回
  2. Ctrl+Home
  3. Ctrl+V
  4. 点击“确定”
  5. 向下
  6. 转到1

我的剪贴板包含:

SET ANSI_NULLS ON
GO

如果您不幸被 SSMS 困住,那么您就可以使用 POS、IIRC。 TWSS。

关于sql-server - 更改数据库中所有存储过程的 ANSI_NULLS 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2147489/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com