2011-03-07 9 views
3

データベースのいくつかのインスタンスでSQL Serverデータベースを使用するアプリケーションがあります... test、prodなど...私はアプリケーションの変更があり、変更の1つは列をnvarchar(max)からnvarchar(200)に変更して、独自の制約を追加できるようにすることです。 SQL Serverでは、テーブルを削除して再作成する必要があることがわかります。SQL ServerのMySQL Dumpと同等のテーブル内のすべてのデータの挿入文を生成する

テーブルドロップを行うスクリプトをまとめて、新しいスキーマで再作成し、以前はそこにあったデータを一度に再挿入したい場合は可能です。この変更を本番環境に移行します。

おそらく、これを行うにはSQL Serverの優れた方法がありますが、わかりません。私がMysqlを使用していた場合は、テーブルとその内容をmysqldumpし、その変更を本番環境に適用するためのスクリプトとして使用します。私はテーブルのすべてのデータの挿入を構成するテキストファイルを与えるSQLサーバー内のエクスポート機能を見つけることができません。

答えて

5

使用SQL Serverのスクリプトが

  • は、右のデータベースをクリックしてコマンドを生成します。タスクは - スキーマとデータを選択してください - >
  • は、スクリプトへのデータの種類を見つける[詳細]ボタンをクリックして次
  • をクリックして、あなたのテーブルを選択するスクリプト
  • を生成します。
  • ファイルに保存するか、新しいクエリーウィンドウに入れるかを選択できます。箇条書きで選択されたすべてのテーブルのデータのためのINSERT文で
  • 結果2.

SQL Server Generate Scripts Data

+0

ありがとうございます。どのように私はそれを逃したのか分からない。私は、テーブルを右クリックしてそのテーブルのデータをエクスポートするためのオプションを提供することができると思っていたと思います。 –

2

必要がありませんスクリプトへ

ここでは二つの方法

1使用alter table ....alter column.....

ですあなたは一度に1つの列を行う必要があります

create table Test(SomeColumn nvarchar(max)) 
go 

alter table Test alter column SomeColumn nvarchar(200) 
go 

2新しいテーブルにダンプ列を変換しながら

select <columns except for the columns you want to change>, 
    convert(nvarchar(200),YourColumn) as YourColumn 
into SomeNewTable 
from OldTable 

ドロップ古いテーブル

は今

EXEC sp_rename 'SomeNewTable', 'OldTable'; 

古いテーブルと同じテーブルにこのテーブルの名前を変更あなたのインデックスを追加してください

+0

この回答ありがとうございます。これも意味があります。 –

関連する問題