2016-09-20 22 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) 

這似乎是一個MySQL相當於一個INSERT...SELECT查詢的,但我不知道如果我下面的最後一行。有人可以照亮我嗎?

+0

在SQL Server中,您需要在函數調用後使用表別名。 –

+1

這是一個系統表。爲什麼要插入它? – Rahul

+0

@Rahul,我們使用的SQL服務器顯然存在一個錯誤,並且在嘗試備份數據庫時崩潰了一個數據庫。更多信息在OP中的鏈接。請原諒我的noobness,但是MS SQL中的兩個系統表都是「OpenRowset」和「SYSCOMITTABLE」? – musicliftsme

回答

1

當在單用戶模式下啓動SQL Server時,知識庫文章https://support.microsoft.com/en-us/kb/3083381中提到的代碼只能使用專用管理員連接執行。

「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