新しいサーバーと更新されたバージョンのMicrosoft SQL Serverでテスト環境をアップグレードしており、問題が発生しています。
新しいサーバーでは、一部のストアドプロシージャを実行すると、古いコードは「オブジェクトが閉じているときは操作が許可されません」を受け取ります。このメッセージは、古いサーバーには表示されませんでした。追跡すると、ストアドプロシージャにSET NOCOUNT ON;
を追加することで問題を解決できます。
データベースのデフォルトを確認したところ、デフォルトに関連して異なる設定(SQL Server 2008とSQL Server 2014)はありませんでした。
1000のストアドプロシージャにSET NOCOUNT ON
を追加する必要なしに、これをグローバルに解決するには、どの設定を確認する必要がありますか?
SQL Server構成には、適切にuser options
というオプションがあり、sp_configure
システムストアドプロシージャを使用して設定できます。 SQL Server Science にブログの投稿を書いて、ユーザーオプションを検査して設定する方法を示しました。
簡単に言うと、これを使用して、古いサーバーから「構成値」を取得できます。
EXEC sys.sp_configure 'user options';
次に、これを介して同じオプションを使用するように新しいサーバーを設定します。
EXEC sys.sp_configure 'user options', <config value>;
RECONFIGURE
(<config value>を古いサーバーの値に置き換えます)。