2017-06-29 8 views
1

以下の2つのクエリでdiffとは何ですか?パフォーマンスの面ではどちらが優れていますか?T -SQLの変数を呼び出す

declare @id varchar(10) ='207054' 

declare @query nvarchar(max) 

Set @query= 'select top 1 * from practice where [email protected]' 
print @query 
Exec Sp_executeSQL @query,N'@id varchar(10)',@id 

Set @query= 'Select top 1 * from practice 
      where externalid='''[email protected]+''' ' 
print @query 
Exec Sp_executeSQL @query 
+0

SQL文字列を連結することは危険です。 SQLインジェクションの例:http://rextester.com/HSO30582 – lad2025

答えて

2

それは@idが移入された方法によって異なります。その変数の値がユーザから来た場合、2番目のオプションは巨大なセキュリティホール(Sql Injection参照)を開きますが、最初のオプションはそうではありません。

今日は安全性の高い情報源です。突然明日は危険な方法で使用され、突然データベースがハッキングされます。可能であれば、最初のオプションを優先してください。

関連する問題