2016-09-20 12 views
0

ここからクエリを実行しようとしています:https://support.microsoft.com/en-us/kb/3083381。しかし、tableに誤った構文エラーが発生しています。SQL Server:INSERT ... SELECTのようなクエリ構文

insert into dbChangeTrackingMetadata.dbo.t_SYSCOMMITTABLE 
SELECT commit_ts, xdes_id, commit_lbn, commit_csn, commit_time 
FROM OpenRowset (table SYSCOMMITTABLE, db_id(), 0, 0) 

これはINSERT...SELECTクエリのMySQLの同等のようですが、私は最後の行を次てるかどうかはわかりません。誰かが私に光を当てることができますか?

+0

SQL Serverでは、関数呼び出しの後にテーブルエイリアスが必要です。 –

+1

これはシステムテーブルです。なぜそれに挿入しているのですか? – Rahul

+0

@Rahul、使用しているSQLサーバにバグがあり、バックアップしようとしているときにDBがクラッシュしました。 OPのそのリンクの詳細。申し訳ありませんが、MS SQLの両方のシステムテーブルの 'OpenRowset'と' SYSCOMITTABLE'ですか? – musicliftsme

答えて

1

KB資料https://support.microsoft.com/en-us/kb/3083381に記載されているコードは、SQL Serverがシングルユーザーモードで起動されているときに専用管理者接続を使用してのみ実行できます。

"OPENROWSET(TABLE ...)"構文は、システムオブジェクトによってのみ(SQL Serverが正常に起動されたとき)実行できる内部システムコールです。 OPENROWSETの

許さ構文は以下のようになります。

SELECT * FROM OPENROWSET(BULK 'C:\WINDOWS\system.ini', SINGLE_CLOB) t 

SELECT * FROM OPENROWSET('SQLNCLI', 'Server=.;Trusted_Connection=yes;', 'SELECT * FROM sysdatabases') t 

はOPENROWSETの詳細についてはhttps://msdn.microsoft.com/en-us/library/ms190312.aspxを参照してください。