2010-12-18 18 views
1

すべてのテーブルの "CREATE"スクリプトを取得します。SQLの管理スタジオで "テーブルの作成"、 "テーブルの作成"スクリプトの操作方法

sp_helptextのようなスクリプトはありますか?

"スクリプトテーブル" - > "テーブルの作成" が選択されている場合、どのようにスクリプトを呼び出すことができますか?

+0

スキーマのみに興味があります。データではありません。右 ? – TarasB

+0

はい、まずスキーマを取得します。データの取得は別のステップです。 – maycil

答えて

3

データベースを右クリックして、[タスク] - > [スクリプトの生成]に移動できます。

これは、必要なすべてのスクリプトをスクリプト化する手順を説明します。

+0

あなたは正しいです。スクリプトの生成はこの仕事をうまくやっています。しかし、いくつかの認証の問題のために、私はこのソリューションを使用することはできません。 – maycil

+0

認証の問題は、テーブル定義にアクセスできない場所ですか?そうであれば、テーブルをスクリプト化するツールはありません。ステップ1は、必要なアクセス権を取得するように見えます。 –

0

Stefanとgbnが提案したものを使用できます。さらに、ur DBの正確なレプリカのスクリプトが必要な場合は、Microsoft SQL Server Database Publishing Wizardをご覧ください。それはVSに組み込まれて来る2008 +

+0

は新しいバージョンがありますか?それはSQL 2008をサポートしていません – maycil

1

SQL Serverでスクリプトを生成オプションを使用することができます。

Tasks->Generate Scripts 

必要に応じてスクリプトを作成できます。

0

はすでに誰かがこの質問

The best method is Rightclick the database then Tasks->Generate Scripts 

に正しい答えを与えるしかし、いくつかの理由で、あなたがメソッドを使用することはできませんので、あなたが指摘されています。

クエリを使用する方法を探しているなら、あなたは以下の方法を取ることができ、それはあなたのテーブルのスキーマを返します

Go 

Create Function ShowMyTableData 
(
    @vsTableName varchar(50) 
) 

Returns 
    VarChar(Max) 
With ENCRYPTION 

Begin 

Declare @ScriptCommand varchar(Max) 

Select @ScriptCommand = 
    ' Create Table [' + SO.name + '] (' + o.list + ')' 
    + 
    (
     Case 
     When TC.Constraint_Name IS NULL 
      Then '' 
     Else 'ALTER TABLE ' + SO.Name + ' ADD CONSTRAINT ' + 
      TC.Constraint_Name + ' PRIMARY KEY ' + ' (' + LEFT(j.List, Len(j.List)-1) + ')' 
     End 
    ) 
From sysobjects As SO 
    Cross Apply 

    (
     Select 
      ' [' + column_name + '] ' + 
      data_type + 
      (
       Case data_type 
        When 'sql_variant' 
         Then '' 
        When 'text' 
         Then '' 
        When 'decimal' 
         Then '(' + Cast(numeric_precision_radix As varchar) + ', ' + Cast(numeric_scale As varchar) + ') ' 
        Else Coalesce('(' + 
             Case 
              When character_maximum_length = -1 
               Then 'MAX' 
              Else Cast(character_maximum_length As VarChar) 
             End + ')' , '' 
           ) 
       End 
      ) 
      + ' ' + 
      (
       Case 
        When Exists ( 
            Select id 
            From syscolumns 
            Where 
             (object_name(id) = SO.name) 
             And 
             (name = column_name) 
             And 
             (columnproperty(id,name,'IsIdentity') = 1) 
           ) 
         Then 'IDENTITY(' + 
           Cast(ident_seed(SO.name) As varchar) + ',' + 
           Cast(ident_incr(SO.name) As varchar) + ')' 

        Else '' 

       End 
      ) + ' ' + 

      (
       Case 
        When IS_NULLABLE = 'No' 
         Then 'NOT ' 
        Else '' 
       End 
      ) + 'NULL ' + 
      (
       Case 
        When information_schema.columns.COLUMN_DEFAULT IS NOT NULL 
         Then 'DEFAULT ' + information_schema.columns.COLUMN_DEFAULT 
        ELse '' 
       End 
      ) + ', ' 
     From information_schema.columns 
     Where 
      (table_name = SO.name) 
     Order by ordinal_position 
     FOR XML PATH('')) o (list) 

     Inner Join information_schema.table_constraints As TC On (
                    (TC.Table_name = SO.Name) 
                    AND 
                    (TC.Constraint_Type = 'PRIMARY KEY') 
                    And 
                    (TC.TABLE_NAME = @vsTableName) 
                   ) 
     Cross Apply 
      (
       Select '[' + Column_Name + '], ' 
       From information_schema.key_column_usage As kcu 
       Where 
        (kcu.Constraint_Name = TC.Constraint_Name) 
       Order By ORDINAL_POSITION 
       FOR XML PATH('') 
      ) As j (list) 
Where 
    (xtype = 'U') 
    AND 
    (Name NOT IN ('dtproperties')) 

Return @ScriptCommand 

End 

あなたは

Select [dbo].ShowMyTableData ('tablename') 

延長のようなあなたの関数を呼び出すことができます

データが必要な場合は、次のクエリを使用することもできます。

select 'insert into tablename values('+yourcolumnanme+','+columnanme2.....+')' from tablename 
関連する問題