Sqlcmd:Error:command';附近第17行的语法错误:r';归档

Sqlcmd:Error:command';附近第17行的语法错误:r';归档,sqlcmd,Sqlcmd,我需要使用批处理文件执行多个sql文件。因此,我用以下代码创建了一个文件CREATE_DB.sql: /* SCRIPT: CREATE_DB.sql */ /* BUILD A DATABASE */ -- This is the main caller for each script SET NOCOUNT ON GO PRINT 'CREATING DATABASE' IF EXISTS (SELECT 1 FROM SYS.DATABASES WHERE NAME = 'MSSQLT

我需要使用批处理文件执行多个sql文件。因此,我用以下代码创建了一个文件CREATE_DB.sql

/* SCRIPT: CREATE_DB.sql */
/* BUILD A DATABASE */

-- This is the main caller for each script
SET NOCOUNT ON
GO

PRINT 'CREATING DATABASE'
IF EXISTS (SELECT 1 FROM SYS.DATABASES WHERE NAME = 'MSSQLTIPS')
DROP DATABASE MSSQLTIPS
GO
CREATE DATABASE MSSQLTIPS
GO

:On Error exit

:r  C:\Users\XYZ\Documents\SQL Server Management Studio\BATCheck\CREATE_TABLES.sql
:r  C:\Users\XYZ\Documents\SQL Server Management Studio\BATCheck\TABLE_INSERTS.sql
:r  C:\Users\XYZ\Documents\SQL Server Management Studio\BATCheck\CREATE_INDEXES.sql
:r  C:\Users\XYZ\Documents\SQL Server Management Studio\BATCheck\CREATE_PROCEDURES.sql

PRINT 'DATABASE CREATE IS COMPLETE'
GO
    SQLCMD -E -dmaster -i"C:\Users\XYZ\Documents\SQL Server Management Studio\BATCheck\create_db.sql"
PAUSE
然后,我用以下代码创建一个批处理文件create_db.bat

/* SCRIPT: CREATE_DB.sql */
/* BUILD A DATABASE */

-- This is the main caller for each script
SET NOCOUNT ON
GO

PRINT 'CREATING DATABASE'
IF EXISTS (SELECT 1 FROM SYS.DATABASES WHERE NAME = 'MSSQLTIPS')
DROP DATABASE MSSQLTIPS
GO
CREATE DATABASE MSSQLTIPS
GO

:On Error exit

:r  C:\Users\XYZ\Documents\SQL Server Management Studio\BATCheck\CREATE_TABLES.sql
:r  C:\Users\XYZ\Documents\SQL Server Management Studio\BATCheck\TABLE_INSERTS.sql
:r  C:\Users\XYZ\Documents\SQL Server Management Studio\BATCheck\CREATE_INDEXES.sql
:r  C:\Users\XYZ\Documents\SQL Server Management Studio\BATCheck\CREATE_PROCEDURES.sql

PRINT 'DATABASE CREATE IS COMPLETE'
GO
    SQLCMD -E -dmaster -i"C:\Users\XYZ\Documents\SQL Server Management Studio\BATCheck\create_db.sql"
PAUSE
但是,双击批处理文件时会显示以下错误:

Sqlcmd: Error: Syntax error at line 17 near command ':r         ' in file 'C:\Users\XYZ\Documents\SQL Server Management Studio\BATCheck\create_db.sql'.

我认为这是由于文件路径中的空格造成的,但如何消除此错误?

如果在文件周围加双引号有帮助,请尝试以下链接
:r“C:\myfile.sql”
应该可以解决此问题。另外请注意,文件路径是相对于sqlcmd启动目录的,因此只需创建表格即可。感谢您的回复,sql也可以工作。我在前面使用了双引号,运行了bat文件,但是没有在数据库中创建表、过程等。所以,我在这行之前写了“usemssqltips”和“GO”:On Error exit“,它成功了。