Сначала создайте действительный оператор T-SQL. У вас есть ошибки при использовании CREATE LOGIN и sp_executesql .
ownerpass = "abcdef"
owner = "yrdy"
sql_login = (
"DECLARE @sql AS NVARCHAR(MAX);"
"DECLARE @Databaseowner sysname = ?;"
"DECLARE @Databaseownerpass sysname = ?;"
"SET @sql =
N'if not exists (select * from sys.sql_logins where name = @Databaseowner )' +
N' CREATE LOGIN ' + QUOTENAME(@Databaseowner) +
N' WITH PASSWORD = ' + QUOTENAME(@Databaseownerpass, '''') + N';';"
"EXEC sp_executesql @sql, N'@Databaseowner sysname, @Databaseownerpass sysname', @Databaseowner, @Databaseownerpass;"
)
Затем, если вы используете ?
в качестве заполнителя, выполните ваш скрипт следующим образом:
cursor.execute(sql_login, (owner, ownerpass))