Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server [Microsoft][ODBC驱动程序17 for SQL Server][SQL Server]靠近“abcdef”的语法不正确。(102)(SQLExecDirectW)“)_Sql Server_Python 3.x_Python 2.7_Azure Sql Database_Pyodbc - Fatal编程技术网

Sql server [Microsoft][ODBC驱动程序17 for SQL Server][SQL Server]靠近“abcdef”的语法不正确。(102)(SQLExecDirectW)“)

Sql server [Microsoft][ODBC驱动程序17 for SQL Server][SQL Server]靠近“abcdef”的语法不正确。(102)(SQLExecDirectW)“),sql-server,python-3.x,python-2.7,azure-sql-database,pyodbc,Sql Server,Python 3.x,Python 2.7,Azure Sql Database,Pyodbc,密码附近出现不正确的语法错误根据我的发现,如果您的sql语句有参数,您应该修改代码如下: 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语句有参数,您应该修改代码如下:

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', N'@Databaseownerpass sysname', @Databaseowner = @Databaseowner, @Databaseownerpass = @Databaseownerpass;")
cursor.execute(sql_login, owner,ownerpass)
=============================================
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;"
)   
参考:


希望这有帮助。

首先,生成有效的T-SQL语句。在使用和时会出现错误

然后,如果使用?作为占位符,请按如下方式执行脚本:

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', N'@Databaseownerpass sysname', @Databaseowner = @Databaseowner, @Databaseownerpass = @Databaseownerpass;")
cursor.execute(sql_login, owner,ownerpass)
=============================================
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;"
)   

设置@sql=N'如果不存在,请从sys.sql\u logins中选择*,其中name=@Databaseowner'+N'CREATE LOGIN'+QUOTENAME@Databaseowner+N'和密码='+QUOTENAME@Databaseownerpass,+N';'


如何在上述行中添加check_policy=off?

N'带密码应为N'带密码。EXEC sp_executesql@sql,N'@Databaseowner sysname',N'@Databaseownerpass sysname',@Databaseowner=@Databaseownerpass=@Databaseownerpass;应为EXEC sp_executesql@sql,N'@Databaseowner sysname,@Databaseownerpass sysname'@Databaseowner,@Databaseownerpass;pyodbc.ProgrammingError:'42000',u'[42000][Microsoft][SQL Server的ODBC驱动程序17][SQL Server]过程或函数指定的参数太多。8144 SQLExecDirectW“获取此错误N”如果不存在,请从sys.sql\u logins中选择*,其中name=@Databaseowner'+N“创建登录名”+QUOTENAME@Databaseowner+N'和密码='+QUOTENAME@Databaseownerpass,+N';';@AzarManiyar尝试执行如下语句:EXEC sp_executesql@sql,N'@Databaseowner sysname,@Databaseownerpass sysname',@Databaseowner,@Databaseownerpass;是尝试了相同的错误