sql >> データベース >  >> RDS >> Sqlserver

AttachDbFilenameの問題は何ですか

    User Instanceの使用 これは、SQLServerがプログラムで使用するためにそのデータベースファイルの特別なコピーを作成していることを意味します。同じ接続文字列を使用する2つの異なるプログラムがある場合、それらはデータベースの2つのまったく異なるコピーを取得します。これはロットにつながります 混乱を招きます。人々はプログラムを使用してデータの更新をテストしてから、Management Studioでデータベースの別のコピーに接続し、更新が機能していないと不平を言います。これにより、間違った問題のトラブルシューティングを試みる、欠陥のある一連の野生のガチョウの追跡手順が実行されます。

    この記事では、この機能の使用方法について詳しく説明しますが、最初の注意事項であるUser Instanceに注意してください。 機能は廃止されました 。 SQL Server 2012では、推奨される代替手段は(この順序で、IMHO):

    1. データベースを作成するか、SQLServerの実際のインスタンスに接続します。接続文字列は、インスタンス名、データベース名、および資格情報を指定するだけで済みます。 Management Studio、Visual Studio、およびプログラムがすべてデータベースの単一のコピーに接続するため、混乱が生じることはありません。

    2. SqlLocalDbを使用する ローカル開発のため。昨日、この記事「SQL Server 2012ExpressLocalDB入門」を紹介したと思います。

    3. SQLServerCompactを使用します。機能と構文が同じではないため、このオプションが最も好きではありません。したがって、最終的に展開する予定のすべての機能が必ずしも提供されるとは限りません。 Compact Editionも廃止されたため、それがあります。

    もちろん、バージョンSqlLocalDbを使用している場合 はオプションではありません。したがって、実際のデータベースを作成し、それを一貫して使用する必要があります。完全を期すためのコンパクトオプションについてのみ言及します。これは、AttachDbFileNameを使用するのと同じくらい悪い考えになる可能性があると思います。 。

    編集: 私はこれについてここにブログを書きました:

    • 悪い習慣:AttachDBFileNameの使用


    1. SQL ServerのCOUNT()とCOUNT_BIG():違いは何ですか?

    2. MySQLでタイムゾーンを変換する方法

    3. MySQLのタイムゾーンを設定するにはどうすればよいですか?

    4. PostgreSQL複合主キー