Понимая, QUOTED_IDENTIFIER

Мы только что столкнулись с проблемой, когда один из наших хранимых процессов вызвал ошибку;

SELECT failed because the following SET options have incorrect settings: 'QUOTED_IDENTIFIER'

Я исправил ее, изменив хранимую процедуру и установив приведенный идентификатор на ON. Дело в том, что я сделал это до вызова CREATE PROCEDURE. Например,

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[InsertStuff]

Я бы подумал, что это повлияло на инструкцию CREATE PROCEDURE, но не повлияло бы на выполнение этой процедуры.

Все наши сценарии развертываются как сценарии drop и create и выполняются через sqlcmd. Я только что прочитал, что здесь (поиск Пример: Выполнение SQLCMD) и здесь , что sqlcmd выполняется с приведенным идентификатором off . Я изменил наш сценарий, включив параметр -I, чтобы увидеть, устраняет ли это наши проблемы.

Мои вопросы затем;

1) Влияет ли инструкция SET QUOTED_IDENTIFIER ON только на инструкцию DDL CREATE PROCEDURE или также на выполнение хранимой процедуры? Мой быстрый тест показывает последнее.

2) Поскольку по умолчанию этот переключатель включен, я предполагаю, что установка переключателя -I запроса sqlcmd не окажет неблагоприятного воздействия. Для всех целей и намерений я предположу, что это то же самое, что копировать содержимое сценария, а затем вставлять их в менеджер запросов и выполнять. Пожалуйста, исправьте меня, если я ошибаюсь в этом. Наш простой сценарий развертывания выглядит следующим образом:

@echo off

SET dbodir=../Schema Objects/Schemas/dbo/Programmability/Stored Procedures/
SET tpmdir=../Schema Objects/Schemas/TPM/Programmability/Stored Procedures/

echo --- Starting dbo schema

for %%f in ("%dbodir%*.sql") do (echo Running %%f.... && @sqlcmd -I -U %1 -P %2 -S %3 -d %4 -i "%dbodir%%%f")

echo --- Completed dbo schema

echo --- Starting TPM schema

for %%g in ("%tpmdir%*.sql") do (echo Running %%g.... && @sqlcmd -I -U %1 -P %2 -S %3 -d %4 -i "%tpmdir%%%g")

echo --- Completed TPM schema

pause

Спасибо заранее

Правка:

Кажется, что существует некоторая дополнительная информация , чтобы определить, где хранятся опции НАБОРА для хранимых процессов, и принятый ответ на этот вопрос предоставляет некоторые сведения об общих правилах, касающихся общего порядка приоритета, который применяется к опциям НАБОРА. В комментариях к этому также говорится, что

«... Только QUOTED_IDENTIFER и ANSI_NULLS настройки фиксируются во время создания процедуры». «... SET QUOTED IDENTIFIER не может быть установлен во время выполнения внутри хранимой процедуры» (мой акцент).

Я чувствую, что отвечает на мой первый вопрос.

Есть ли участники второй части?

-121--1187047-

установить приложение в iphone-устройство с помощью командной строки Я использую xcodebuild install -alltargets -iphoneos4.2 -activeconfiguration provisioning_profile=path_of_my_provisioningprofile code_sign_identity=identity. Эта команда создает мое приложение, и я...

Я использую xcodebuild install -alltargets -iphoneos4.2 -activeconfiguration provisioning_profile=path_of_my_provisioningprofile code_sign_identity=identity. Эта команда создает мое приложение, и я также получаю файл сборки (.app). Но как установить приложение на устройство из командной строки. Пожалуйста, помогите мне в этом вопросе.

22
задан rockeye 11 January 2012 в 10:54
поделиться