2016-08-22 8 views
3

:私はSSMSを使用して新しいデータベースを作成すると、新しいデータベースは、デフォルトの設定の下にいくつかの奇妙ありデータベースオプション:デフォルトでは、新しいデータベースでは「SET ANSI_NULLS OFF」がオフになっていますか? SSMS 2014を使用して

ALTER DATABASE [del] SET ANSI_NULL_DEFAULT OFF 
GO 
ALTER DATABASE [del] SET ANSI_NULLS OFF 
GO 
ALTER DATABASE [del] SET ANSI_PADDING OFF 
GO 
ALTER DATABASE [del] SET ANSI_WARNINGS OFF 
GO 
ALTER DATABASE [del] SET ARITHABORT OFF 

私はスクリプトとストアドプロシージャをテストし、ANSI_NULLSが実際にONになっているようです。

なぜ私はデータベースを作成するときにANSI_NULLSのような重要な設定がオフになっているのですか?スクリプト内でどのようにONになるのでしょうか?

答えて

1

スクリプトでどのようにONになるのですか?

SETステートメントを使用して設定された接続レベルの設定は、ANSI_NULLSの既定のデータベース設定を上書きします。
既定では、ODBCおよびOLE DBクライアントは、SQL Serverのインスタンスに接続するときに、セッションに対してANSI_NULLSをONに設定した接続レベルのSETステートメントを発行します。

なぜデータベースを作成するときにANSI_NULLSのような重要な設定がオフになっているのですか?

私はオフとオンの両方NULLでデータベースを作成しましたが、毎回私が挿入しようとすると、クライアント・ドライバは、さらに以下の私

ためONとして、これらのセットのオプションを生成MSDNはこれについて言いたいことです..

SQL Serverの将来のバージョンでは、ANSI_NULLSは常にONになり、オプションをオフに明示的に設定したアプリケーションではエラーが発生します。新しい開発作業でこの機能を使用しないでください。現在、この機能を使用しているアプリケーションを変更する予定です。最も近いが、私はこのオプションがONに設定されている理由を考えることができ

は、MSがデフォルトでOFF ANSI NULLSで作成した新しいデータベースを持っていることを選んだ理由は、まだ奇妙では不明である

+0

をcompatabiltyに起因する可能性があります。特にあなたが引用したMSDNのテキストを考慮すると、将来的にANSI_NULLSをFalseに明示的に設定しなくてもエラーが発生することを示しています。私は、サーバーのインストール中にそのような選択に気づいたことを思い出すことはできません。 ただし、作成されたすべての新しいデータベースのモデルである "model"というシステムデータベースでこの設定を変更することはできます。モデル内の設定は、新しいデータベースのデフォルトとして機能します。 –

関連する問題