SQL Serverデータベースの「デフォルト」テーブル


8

(SSMSを使用して)開発サーバーに新しいデータベースを追加すると、5つのテーブルが自動的に作成されます。

これらは、別のデータベースにすでに存在するアプリケーションテーブルのコピーです。

これは、テーブルが「共通」などのマークを付けられる場所がわからない最近のSQL Serverの機能であると想定しているため、新しいデータベースに自動的に追加されます。

しかし、どうすればそれを防ぐことができますか?

混乱を避けるため、このデータベースはスクリプト化されておらず、SSMS GUIから直接作成されます([データベース]> [新しいデータベース]を右クリック)。

(StackOverflowから移動)


4
システムデータベースからモデルデータベースをチェックアウトします。テーブルも含まれていますか?
vonPryz 2016

はい、同じテーブル-それが原因だと思いますか?
CompanyDroneFromSector7G 2016

はい、model次に作成されるすべてのデータベースのソースとして使用される「モデル」データベースです。
Marcin S.

わからない(バージョン6.3以降のSQL Serverのみを使用)
CompanyDroneFromSector7G

ただし、この機能は少なくともSQL Server 2005(おそらく以前のバージョン)から存在しています。
Andriy M

回答:


15

これは、テーブルがmodelシステムデータベースに存在するため(コメントでの議論に基づいて)発生します。ドキュメントあたり(私の強調):

modelデータベースを変更すると、後で作成されたすべてのデータベースがそれらの変更を継承します。たとえば、権限やデータベースオプションを設定したり、テーブル、関数、ストアドプロシージャなどのオブジェクトを追加したりできます。モデルデータベースのファイルプロパティは例外であり、データファイルの初期サイズを除いて無視されます。

解決策として、テーブルを削除すると、modelこの現象が停止します。


TempDB サーバーの再起動後のレクリエーションなど、いくつかの例外があることを付け加えておきます。その場合は、TempDBデータファイルの初期サイズを含む、すべての独自のファイルプロパティを使用します。
Marcin S.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.