0

こんにちは私はSQLSERVER2008 R2を使用しています。誰かが、UIを使用せずに作成、変更などのスクリプトを生成するのを手伝ってくれませんか。

4

4 に答える 4

5

ストアドプロシージャ、ビュー、関数などは、sys.sql_modules暗号化されていない限り、すべてスクリプト化できます。

SELECT definition 
  FROM sys.sql_modules
  WHERE [object_id] = OBJECT_ID(N'dbo.object_name');

または、複数のスクリプトを作成する場合:

SELECT definition + CHAR(13) + CHAR(10) + 'GO'
  FROM sys.sql_modules
  WHERE OBJECT_NAME([object_id]) IN (N'name1', N'name2', ...);

またはすべて:

SELECT '--' + QUOTENAME(OBJECT_SCHEMA_NAME([object_id]))
  + '.' + QUOTENAME(OBJECT_NAME([object_id]))
  + CHAR(13) + CHAR(10) + definition 
  + CHAR(13) + CHAR(10) + 'GO' + CHAR(13) + CHAR(10)
FROM sys.sql_modules
WHERE definition IS NOT NULL;

(もちろん、これらはすべてManagement Studioで実行すると運命づけられ、出力文字列の最大長を超えると、テキストの結果は最大8Kになります。ただし、他の場所でこれらを使用したいようです。)

これは、オブジェクトの作成時に有効だったSET設定のスクリプトを作成しないことに注意してください。ただし、このクエリを拡張して、同じビューから取得できるANSI_NULLSQUOTED_IDENTIFIERのような設定を含めることができます。

テーブルは少しトリッキーです。プロファイラーの実行中にSSMSでスクリプトを生成すると、多数のクエリを通じてこれが実行され、コード内にテーブルの作成スクリプトが作成されることがわかります(つまり、スクリプトをスニッフィングすることはできません)。テーブルに使用しているオプション、すべての外部キーと依存オブジェクトをスクリプト化する必要があるかどうかなどによっては、非常に複雑になる可能性があります。このため、podiluskaの回答で強調表示されているSMOメソッドをお勧めします。

すでにSSMSを使用している場合は、スクリプトの生成メニュー項目を使用しない目的がわかりません。シングルトンアプローチが問題である場合は、オブジェクトエクスプローラの代わりにオブジェクトエクスプローラの詳細を使用して、複数のオブジェクトに対してこれを行うことができます。

ここに画像の説明を入力してください

于 2012-08-28T12:18:51.607 に答える
3

Scripterこれを行うには、SQL 管理オブジェクト (SMO)のクラスを使用できます。

例: http://www.mssqltips.com/sqlservertip/1833/generate-scripts-for-database-objects-with-smo-for-sql-server/

于 2012-08-28T12:06:47.753 に答える
1

これを試して:

次の手順で sproc を作成します。

1.まず、テーブル スクリプトを作成する必要があるすべてのテーブル名を取得します。

2.各テーブルをループして、以下の情報を取得します。

  select COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,IS_NULLABLE  from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'tablename'

3.ループ自体で、テーブル作成スクリプトを動的に入力しようとします。

于 2012-08-28T12:30:17.693 に答える
0

これを行うSchemaZenという名前のオープン ソース コマンド ライン ユーティリティを作成しました。これは、管理スタジオからスクリプトを作成するよりもはるかに高速であり、出力はよりバージョン管理に適しています。スキーマとデータの両方のスクリプト作成をサポートしています。

スクリプトを生成するには、次を実行します。

schemazen.exe スクリプト --server localhost --database db --scriptDir c:\somedir

次に、スクリプトを実行してデータベースを再作成します。

schemazen.exe create --server localhost --database db --scriptDir c:\somedir
于 2013-09-06T17:13:42.500 に答える