我想插入一個sql腳本到表中。我敢肯定,這不僅僅是將腳本包裝在引號中並將其引入插入語句中(引用腳本和更復雜的轉義似乎有問題,例如)如何準確地將sql腳本插入到SqlServer表中
因此,如何安全地將任意tsql存儲在一個SqlServer表?
如果需要,我可以使用sql或c#編碼腳本。
我想插入一個sql腳本到表中。我敢肯定,這不僅僅是將腳本包裝在引號中並將其引入插入語句中(引用腳本和更復雜的轉義似乎有問題,例如)如何準確地將sql腳本插入到SqlServer表中
因此,如何安全地將任意tsql存儲在一個SqlServer表?
如果需要,我可以使用sql或c#編碼腳本。
使用參數化查詢:
C#
var cmd = new SqlCommand(...);
cmd.CommandText = "INSERT INTO [Bla] ([SQL Column]) VALUES (@MyValue)";
cmd.Parameters.AddWithValue("MyValue", yourValueHere);
這將會把所有的報價和等的護理
如果你想使用存儲過程,你最終會以類似的方式執行它:
var cmd = new SqlCommand(...);
cmd.CommandText = "StoreSQL";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("MyValue", yourValueHere);
使用存儲過程並將sql腳本作爲參數傳遞參數 - 你不會有報價和特殊符號的問題。
只要您使用帶有nvarchar(max)參數的存儲過程,將SQL文本存儲在數據庫中就不應該是一個問題,應該不需要轉義任何東西。
例如
CREATE PROCEDURE uspStoreSQL
(
@sql nvarchar(max)
)
AS
INSERT INTO SomeTable (SQLText)
Values (@sql)