Eu sei que não é possível definir um agrupamento para uma sessão no sql server .
Eu tenho diferentes servidores com diferentes agrupamentos , no entanto, um deles é um agrupamento sensível a maiúsculas e minúsculas e isso pode ser mais difícil nos detalhes, como você pode ver na imagem abaixo.
Existe alguma configuração ou algo que eu possa fazer para desenvolver meus scripts como se o agrupamento fosse sensível a maiúsculas e minúsculas , para que quando eu precisar portar scripts para um servidor sensível a maiúsculas e minúsculas, tudo já esteja bem?
Eu tenho procurado manipular o agrupamento sem alterar nada, tentando limitá-lo à minha sessão, por assim dizer, mas não consegui encontrar nada, há algo que eu possa fazer?
set transaction isolation level read uncommitted
set nocount on
set deadlock_priority low
use ReportServer
--select * from sys.tables
select top 10 Name, Path, CreationDate
from dbo.catalog
order by path COLLATE Latin1_General_100_CI_AS_KS_WS desc
exec sp_help 'dbo.catalog'
DECLARE @SQL nvarchar(max)
SET @SQL='use ReportServer;select top 10 Name,
Path, CreationDate from dbo.Catalog order by path '
SET @SQL=@SQL + 'COLLATE Latin1_General_BIN DESC'
PRINT @SQL
EXEC sp_executesql @SQL
SET @SQL='use ReportServer;select top 10 Name, Path,
CreationDate from dbo.Catalog order by path '
SET @SQL=@SQL + 'COLLATE SQL_Latin1_General_CP1250_CS_AS DESC'
PRINT @SQL
EXEC sp_executesql @SQL
use master
go
SELECT name, COLLATIONPROPERTY(name, 'CodePage') AS Code_Page, description
FROM sys.fn_helpcollations()
ORDER BY name;
Não, não há como fazer isso no SQL Server, exceto restaurar o banco de dados com um nome diferente na mesma instância ou em uma instância de teste e alterar o agrupamento padrão do banco de dados para um que diferencia maiúsculas de minúsculas.
Nem acho que isso seria desejável, pois o agrupamento padrão do banco de dados controla várias coisas, como nomes de objetos no nível do banco de dados, valores de variáveis/parâmetros e literais de string. Alguns deles podem ser adequados para simular teoricamente "sob demanda", como valores literais de parâmetro/variável/string. Mas outros, como nomes de objetos, podem ser problemáticos. Por exemplo, se você tem uma ordenação binária ou diferenciando maiúsculas de minúsculas e deseja simular o comportamento que diferencia maiúsculas de minúsculas, isso permitiria que vários objetos parecessem ter o mesmo nome (por exemplo, "Vendas" e "vendas") e haveria não há como o otimizador lidar com essa ambiguidade.
Outra questão, se tal coisa fosse possível, seria como lidar com a ordenação no nível da instância (ou seja, servidor). Isso lida com coisas como nomes de objetos em nível de instância e nomes de variáveis. E, como a ordenação em nível de instância é tratada separadamente da ordenação em nível de banco de dados, seria necessário haver alguma maneira de defini-los separadamente. Não apenas isso, mas também pode haver outros comportamentos "estranhos" a jusante.
Agora, dito isso, pode ser possível que o Visual Studio / SSDT possa fazer algumas verificações de resolução de nomes, pois os projetos de banco de dados fazem algum nível de validação (por exemplo, deve validar nomes de tabelas/colunas, nomes de parâmetros para procs e funções, etc). Eu tentaria isso para ver se funciona para suas necessidades.