Sql-Server
SSMS 生成的腳本無法執行
因此,我需要從較新版本的 SQL Server(我從 2016 SQL Server 恢復到 2014 SQL Server)導入一個小型數據庫(小於 1GB),而兩者之間沒有直接連接。該數據庫是 CMS 的後端,因此不僅儲存正常數據,還儲存 html 內容。
我找到的解決方案(我遵循了本指南。)是在 SSMS(模式+數據)中使用“生成腳本”來編寫數據庫腳本,然後執行腳本以在目標伺服器上重新創建它。生成的腳本總共大約 900MB。
我遇到的第一個問題是 SSMS 不會執行腳本,因為它顯然對它來說太大了。Sqlcmd 能夠開始執行腳本,但隨後失敗了 10000+ 行。當我在失敗點剪切腳本時,它繼續執行它停止的地方沒有問題,所以我猜測它與記憶體不足有關還是什麼?我收到的具體錯誤是
"Sqlcmd Error: Syntax Error at line 14769 near command ' " ' in file <path\script.sql>".
14769 處的實際行是:
INSERT [dbo].[sf_control_properties] ( [val], [validation], [prnt_prop_id], [ordinal], [nme], [last_modified], [language], [id], [flags], [description_], [control_id], [caption_], [app_name], [voa_version] ) VALUES ( N'RulesGroupBackend', NULL, NULL, 1, N'ControlDefinitionName', CAST(N'2018-03-23T12:35:50.977' AS DateTime), NULL, N'7cf975d2-f37d-4716-a634-0d6424921f38', 1, NULL, N'27c93f05-386b-4fd2-8aae-d6664ee7e57a', NULL, N'Title/', 1)
前一行(多行語句 14766-14768)是:
INSERT [dbo].[sf_control_properties] ( [val], [validation], [prnt_prop_id], [ordinal], [nme], [last_modified], [language], [id], [flags], [description_], [control_id], [caption_], [app_name], [voa_version] ) VALUES ( N'$(document).ready(function(){ $("#content > div > section:nth-child(2) > div > div > div > div > div:nth-child(1) > h2").text("English Support"); });', NULL, N'5d056cac-51db-492c-b601-e88c82a8bc72', 1, N'InlineCode', CAST(N'2018-11-27T20:33:59.060' AS DateTime), NULL, N'1f8ac206-d771-42b2-9991-0ca66bceff19', 1, NULL, NULL, NULL, N'Title/', 1 )
我不知道錯誤指的是什麼,當它在命令 ’ " ’ 附近的第 14769 行顯示語法錯誤時
所以總而言之,我想知道 A)這些行的腳本可能出了什麼問題 B)這是否是 sqlcmd 的問題(因為腳本在 SSMS 中也失敗了)。對我來說,腳本看起來很好,畢竟它是由 SSMS 自動生成的,所以我很困惑問題可能是什麼。謝謝!
嘗試使用-x 參數執行 SQLCMD以禁用可變變電站。當腳本包含 SQLCMD 變數標記(例如 $(stuff-here))但實際上不是 SQLCMD 變數時,這將避免出現問題。