0

ビューを右クリックして [Script View As] をクリックすると、次のエラーが表示されます。

プロパティ TextHeader はビュー '[dbo].[TableName]' では使用できません。このプロパティは、このオブジェクトに存在しないか、アクセス権が不十分なために取得できない可能性があります。テキストは暗号化されています。(Microsoft.SqlServer.Smo)

テーブルのダンプを取得するために使用し、ここでbcp指定されているフォーマット ファイルを作成することもできました。テーブルには約 60 の列があり、手動でクエリを記述したくありません。これを自動的に行う方法はありますか?CREATE TABLE

私はそれを望んでいた

BULK INSERT DB.dbo.TableName
FROM 'E:\Databases\TableName'
WITH (FORMATFILE = 'E:\Databases\TableName.Fmt');
GO

トリックを行いますが、上記のクエリを実行する前に、テーブル自体がデータベースに存在する必要があるようです。助言がありますか?

4

1 に答える 1

2

INFORMATION_SCHEMA.Columns から create table ステートメントを作成できます。何かのようなもの:

select (column_name + ' ' + data_type +
        (case when character_maximum_length is not null
              then '('+character_maximum_length+')'
              else ''
         end) + ','
       ) as ColumnDef
from Information_Schema.columns
order by ordinal_position

おそらくこれで十分です。たとえば、数値を処理する必要がある場合や、「is null」を正確にしたい場合は、より複雑にすることができます。

結果を新しいウィンドウにコピーし、create table ステートメントを追加し、最後のカンマを削除して、最後の閉じ括弧を追加します。

より複雑な SQL ステートメントの最後の手順をすべて実行できますが、1 回限りの作業を手動で実行する方が簡単です。

于 2012-08-10T01:01:32.273 に答える