gpt4 book ai didi

sql-server - Docker CREATE INDEX 中的 SQL Server 失败,因为以下 SET 选项的设置不正确 : ‘QUOTED_IDENTIFIER’

转载 作者:行者123 更新时间:2023-12-03 09:50:57 24 4
gpt4 key购买 nike

我有一个 SQL Server Dockerfile,我的 import-data.sh 从 sql-data 文件夹导入 *.sql 文件。如果我从 Datagrip 之类的工具运行 *.sql 文件,则一切正常,但在自动运行时导入失败并显示此错误消息。

错误信息:

Msg 1934, Level 16, State 1, Line 4
CREATE INDEX failed because the following SET options have incorrect settings: 'QUOTED_IDENTIFIER'. Verify that SET options are correct for use with indexed views and/or indexes on computed columns and/or filtered indexes and/or query notifications and/or XML data type methods and/or spatial index operations.



Dockerfile
FROM microsoft/mssql-server-linux:2017-latest

RUN mkdir /sql-data/
EXPOSE 1433

COPY entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/entrypoint.sh

COPY import-data.sh /usr/src/app/
RUN chmod +x /usr/src/app/import-data.sh

# Copy SQL Scripts to sql-data for processing
COPY ./sql-data/*.sql /sql-data/

CMD /bin/bash /usr/local/bin/entrypoint.sh

入口点.sh
#!/bin/bash

#start SQL Server, start the script to create the DB and import the data, start the app
/usr/src/app/import-data.sh & /opt/mssql/bin/sqlservr

导入数据.sh
#!/bin/bash
# wait for the SQL Server to come up https://github.com/twright-msft/mssql-node-docker-demo-app/issues/11
while [ ! -f /var/opt/mssql/log/errorlog ]
do
sleep 2
done

## tail the error log for the startup dll and then quit
tail -f /var/opt/mssql/log/errorlog | while read LOGLINE
do
[[ "${LOGLINE}" == *"Using 'xpstar.dll' version"* ]] && pkill -P $$ tail
done

echo "Running SQL Scripts"
# Scan for SQL files and load them in
for file in /sql-data/*.sql; do
echo $file
/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P $SA_PASSWORD -i $file
done

/sql-data/setup.sql
IF NOT EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = 'Products')
BEGIN
CREATE DATABASE Products;
END
GO

USE Products;
GO

最佳答案

不幸的是,出于向后兼容性的原因,SQLCMD 实用程序默认为 QUOTED_IDENTIFIER OFFSpecify the -I argument so that QUOTED_IDENTIFIER ON is used.

/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P $SA_PASSWORD -i $file -I

关于sql-server - Docker CREATE INDEX 中的 SQL Server 失败,因为以下 SET 选项的设置不正确 : ‘QUOTED_IDENTIFIER’ ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51200915/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com