Я хотел бы запустить сценарий как:вручную дезинфицировать параметры SQL
CREATE LOGIN [me] WITH PASSWORD = @0
и запустить его любит:
var createUserCommand = conn.CreateCommand();
createUserCommand.CommandText = script;
createUserCommand.Parameters.AddWithValue("@0", passwordDecrypted);
Однако, это бросает:
первого шанс исключение типа «System.Data.SqlClient.SqlException» произошел в System.Data.dll
Дополнительная информация: Неверная синхронизация налог около '@ 0'.
Из того, что я читал в Интернете (нигде официально, только из ответов SO/комментариев), невозможно использовать параметры SQL с операторами DDL. Ссылка на официальные документы для этого приветствуется!
OK. Мне нужно это параметризировать. Как я вижу, существует 2 варианта:
- Я вручную дезинфицирую (
.Replace("'", "''"
) => как я могу сделать это лучше всего? - Я звоню в .NET для дезинфекции для меня. Однако я полагаю, что это не дезинфицировано в ADO.NET, а просто прошло до SQL Server, и там было дезинфицировано ...
Какой был бы лучший подход?
Спасибо, это легко! Можете ли вы указать на дополнительную документацию, что этого достаточно? – Bertvan
Я не могу найти окончательную документацию, но она упомянута здесь; http://msdn.microsoft.com/en-us/magazine/cc163523.aspx/ http://stackoverflow.com/questions/10476252/characters-that-must-be-escaped-in-tsql –
Согласно MSDN link, не будет использовать QUOTENAME (SQL), который будет лучшим вариантом, чем использование String.Replace() (.NET) – Bertvan