2008-12-08 4 views
2

Эй, у меня проблема, связанная с сортировкой, но я не уверен.SQL Stored Proc Collation Context

Я разрабатываю резервную копию моей производственной базы данных. Единственное отличие в средах SQL Server 2005 (о котором я сейчас знаю) заключается в том, что мой локальный хост имеет «SQL_Latin1_General_CP1_CS_AS» (с учетом регистра) в качестве сортировки, а производственная среда имеет «SQL_Latin1_General_CP1_CI_AS» (без учета регистра).

Когда я выполняю хранимые процедуры локально, он бросает «Должен объявить скалярную переменную» @firstName «».

Переменная «@FirstName» была объявлена ​​.

Теперь база данных IS "SQL_Latin1_General_CP1_CI_AS" как сортировка, так почему же хранимые процедуры не работают в контексте, нечувствительном к регистру?

Я изучил это онлайн, и они говорят, что мне нужно перестроить мой SQL-сервер.

Не должен ли контекст базы данных превзойти контекст сервера для сортировки?

BTW, master и tempdb являются как "SQL_Latin1_General_CP1_CS_AS" Case Sensitive.

ответ

1

Это BAD ситуация, в которой вы находитесь. Все, где вы не контролируете сортировку (например, SELECT INTO временная таблица), будет ломаться, когда вы пытаетесь сделать что-либо с использованием varchars. Упорядочение по умолчанию сервера будет превзойти все, где вы явно не принуждаете сортировку, что будет большим, если не все из вашего существующего кода хранимой процедуры.

Обычным решением этой проблемы является переустановить экземпляр SQL Server с правильной сортировкой. Да, вы действительно необходимо сделать. Я знаю об этом, но я понимаю (от тех, кто получил техническую поддержку MS, связанных с этой проблемой) заключается в том, что технически возможно изменить настройку по умолчанию на экземпляре SQL Server, но этот процесс является техническим и подверженным ошибкам, и ошибка может оставить сервер в непригодном для использования состоянии. По-видимому, эта процедура официально не поддерживается Microsoft, и рекомендуемая процедура заключается в переустановке экземпляра SQL Server.

Смежные вопросы