ライブデータベースに既に作成されたテーブルのcreate tableスクリプトを生成したいと思います。SQL ServerでSQLクエリを使用してテーブルの作成スクリプトを生成する方法
テーブルを右クリックして[スクリプトテーブル]メニューをクリックするとスクリプトが生成され、スクリプトが生成されることはわかっています。私のライブDBのUIは非常に遅く実行されているので。
SQLクエリを使用して同じプロセスを実行したいと思います。何か方法はありますか?
ライブデータベースに既に作成されたテーブルのcreate tableスクリプトを生成したいと思います。SQL ServerでSQLクエリを使用してテーブルの作成スクリプトを生成する方法
テーブルを右クリックして[スクリプトテーブル]メニューをクリックするとスクリプトが生成され、スクリプトが生成されることはわかっています。私のライブDBのUIは非常に遅く実行されているので。
SQLクエリを使用して同じプロセスを実行したいと思います。何か方法はありますか?
TSQLソリューションをお探しの場合は、this exampleが示すように、非常に冗長です。
短い代替はSMO library(example)
使っだろう(私はもともとこのhereに答えますが、SQL Serverの専用の開発者は、おそらく、この問題への質問のタイトルは関係ありません)
返信ありがとう.. –
使用このクエリを:
DROP FUNCTION [dbo].[Get_Table_Script]
Go
Create Function Get_Table_Script
(
@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
そして、あなたはこのように、このFunction
を発射することができます
Select [dbo].Get_Table_Script '<Your_Table_Name>'
とトリガーを作成するインデックスとCREATE TABLE
文を生成するためのより完全な(-ish)ソリューションでは、この
SELECT
DB_NAME() AS DataBaseName,
dbo.SysObjects.Name AS TriggerName,
dbo.sysComments.Text AS SqlContent
FROM
dbo.SysObjects INNER JOIN
dbo.sysComments ON
dbo.SysObjects.ID = dbo.sysComments.ID
WHERE
(dbo.SysObjects.xType = 'TR')
AND
dbo.SysObjects.Name LIKE '<Trigger_Name>'
スクリプトのソース?制限事項は何ですか(外部キー、トリガーなどを扱うでしょうか?) –
@clickstefan:この質問では、@Pankaj Agarwalはテーブルスクリプトを作成したいと思います。トリガースクリプトを生成する別の回答を送信します。 –
@clickstefan:データベース内のすべてのtrigerを見つけるには、このリンクを使用してください:http://stackoverflow.com/questions/13200511/how-to-generate-scripts-for-all-triggers-in-database-using-microsoft-sql-サーバー –
を使用するため、トリガーと制約はローウェルIzaguirreによって作らstored procedureを試してみてください。
ここ変更は以下のとおりです。
それはテストの結果、2004年から開発された、最後の更新は、私は、インデックスオプション(PAD_INDEX
、FILLFACTOR
、IGNORE_DUP_KEY
)を含むようにいくつかの改良を加えました2013年
にありましたすべてのコードに適合できないため、完全修飾バージョンはhttp://pastebin.com/LXpBeuN1にあります。
私はローウェルで話をしましたし、新しいバージョンでは、インデックスのオプションやその他の改善のための新たな変化にすぐにオンラインになります。
これはあなたが何をしているかのようです。私の答えではありませんが、ホイールを改革するポイントはありません... http://sqlblogcasts.com/blogs/madhivanan/archive/2007/08/27/generate-sql-script.aspx – nimizen
@nimizenには制限があります。テーブルを作成し、インデックスや制約を作成しない場合は、 'SELECT top 0 * INTO clone FROM table'を使用してこれを行うことができます。 –