我在pyodbc
python 2.7
使用MS SQL Server 2008R
。
这是我创建数据库的代码(SQL代码在SQL中运行良好,但在python中执行时崩溃)
SQL_command = """
IF EXISTS(SELECT * FROM sys.databases WHERE [name] = 'NewDatabase')
DROP DATABASE NewDatabase
"""
conn.cursor.execute(SQL_command)
SQL_command = """
CREATE DATABASE NewDatabase
ON
(
NAME = 'NewDatabase_data'
, FILENAME='D:\MSSQL\DATA\NewDatabase_data.mdf'
, SIZE = 4096KB
, FILEGROWTH = 4096KB
)
LOG ON
(
NAME = 'NewDatabase_log'
, FILENAME='D:\MSSQL\LOG\NewDatabase_log.ldf'
, SIZE = 4096KB
, FILEGROWTH = 10%
)
COLLATE SQL_Latin1_General_CP1_CI_AS
"""
conn.cursor.execute(SQL_command)
SQL_command = """
ALTER DATABASE
NewDatabase
SET RECOVERY SIMPLE
"""
conn.cursor.execute(SQL_command)
但是,我收到了以下错误消息:
pyodbc.ProgrammingError:(' 42000',' [42000] [Microsoft] [ODBC SQL 服务器驱动程序] [SQL Server]不允许CREATE DATABASE语句 多语句交易。 (226)(SQLExecDirectW)')
我可以知道我的代码有什么问题吗?
非常感谢。
=============================================== =====================================
因此,在收到@Matthias的建议后,我在commit
之后执行了drop database
,然后错误消息变为:
pyodbc.ProgrammingError:(' 42000'," [42000] [Microsoft] [ODBC SQL 服务器驱动程序] [SQL Server] CREATE FILE遇到操作系统 错误123(无法检索此错误的文本。原因:15105)while 尝试打开或创建物理文件 ' d:\ MSSQL \ DATA \ NewDatabase_data.mdf&#39 ;. (5123) (SQLExecDirectW); [42000] [Microsoft] [ODBC SQL Server驱动程序] [SQL 服务器] CREATE DATABASE失败。列出的某些文件名不能 创建。检查相关错误。 (1802)&#34)