0

SQL Server でテーブルの 'CREATE TABLE..' 定義を取得する標準的な方法はありますか?

ビューや関数・手続きの定義はINFORMATION_SCHEMAに聞けばいいので、テーブルも同じように出てくるのが自然だろうと思ったのですが、何も見つかりませんでした。

4

3 に答える 3

3

はい -INFORMATION_SCHEMA.TABLESあなたが探しているものでなければなりません。

次のようなものが得られます。

aspnetdb    dbo    aspnet_Paths                      BASE TABLE
aspnetdb    dbo    aspnet_PersonalizationAllUsers    BASE TABLE
aspnetdb    dbo    aspnet_PersonalizationPerUser     BASE TABLE
aspnetdb    dbo    vw_aspnet_WebPartState_Paths      VIEW
aspnetdb    dbo    vw_aspnet_WebPartState_Shared     VIEW
aspnetdb    dbo    vw_aspnet_WebPartState_User       VIEW
aspnetdb    dbo    aspnet_Applications               BASE TABLE

テーブルの列について知りたい場合は、 を参照してくださいINFORMATION_SCHEMA.COLUMNS

SELECT * 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'aspnet_Users'

指定されたテーブルの列のすべての詳細が表示されます。

于 2009-10-29T16:31:35.537 に答える
1

ビューとコードにINFORMATION_SCHEMAを使用すると失敗します。データはnvarchar(4000)に制限されているため、それより長いデータは読み取られません。sys.sql_modulesまたはOBJECT_DEFINITIONを使用します。

テーブルの場合、それはより困難です。「テーブル」は、列、制約、インデックス、場合によってはルール、UDTで構成されます(何か忘れましたか?)。これが、SSMSにビューまたはストアドプロシージャと比較して非常に多くのテーブルスクリプトオプションがある理由です。

SSMSのプロファイリングをお勧めしますが、SMOを使用しないことをお勧めします...またはCLRコードまたはxp_cmdshellを介してSMOを使用します。

于 2009-10-29T19:59:34.167 に答える
0

.NET から SMO (Microsoft.SqlServer.Smo) を使用して、テーブルのスクリプトを作成できます。

于 2009-10-29T16:31:58.803 に答える