Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在本机编译的存储过程中比较varchar参数?_Sql_Sql Server_Sql Server 2014_In Memory Database_Oltp - Fatal编程技术网

Sql 如何在本机编译的存储过程中比较varchar参数?

Sql 如何在本机编译的存储过程中比较varchar参数?,sql,sql-server,sql-server-2014,in-memory-database,oltp,Sql,Sql Server,Sql Server 2014,In Memory Database,Oltp,我正在将一些表和存储过程迁移到内存中优化的表和本机编译的存储过程。我一直在比较字符串 比较、排序和操纵不符合以下条件的字符串 本机编译的存储系统不支持使用*\u BIN2排序规则 程序 在AdventureWorks2014的副本中,更改@SecretKey参数的排序规则似乎对我有效: CREATE PROCEDURE [User].[GetFingerPrint] @Id int, @SecretKey VARCHAR(512) WITH NATIVE_COMPILA

我正在将一些表和存储过程迁移到内存中优化的表和本机编译的存储过程。我一直在比较字符串

比较、排序和操纵不符合以下条件的字符串 本机编译的存储系统不支持使用*\u BIN2排序规则 程序


在AdventureWorks2014的副本中,更改
@SecretKey
参数的排序规则似乎对我有效:

CREATE PROCEDURE [User].[GetFingerPrint]
    @Id int,
    @SecretKey VARCHAR(512) 
    WITH NATIVE_COMPILATION, SCHEMABINDING, EXECUTE AS OWNER
AS BEGIN ATOMIC WITH
(
 TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N'us_english'
)

SELECT [Id]
      ,[FingerPrint]
      ,[SecretKey]
      ,[BranchId]
      ,[SteadySign]
      ,[CreatedOn]
      ,[ModifiedOn]
  FROM [User].[FingerPrints]
  WHERE [Id] = @Id AND [SecretKey] = @SecretKey COLLATE LATIN1_GENERAL_BIN2

END
GO

那么,您可以将SecretKey更改为使用BIN2排序规则吗?请确保这不会中断需要不同排序规则的调用方
CREATE PROCEDURE [User].[GetFingerPrint]
    @Id int,
    @SecretKey VARCHAR(512) 
    WITH NATIVE_COMPILATION, SCHEMABINDING, EXECUTE AS OWNER
AS BEGIN ATOMIC WITH
(
 TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N'us_english'
)

SELECT [Id]
      ,[FingerPrint]
      ,[SecretKey]
      ,[BranchId]
      ,[SteadySign]
      ,[CreatedOn]
      ,[ModifiedOn]
  FROM [User].[FingerPrints]
  WHERE [Id] = @Id AND [SecretKey] = @SecretKey COLLATE LATIN1_GENERAL_BIN2

END
GO