在我的项目中,我们SQL_1xCompat_CP850_CI_AS用作 SQL Server 实例和应用程序数据库的排序规则设置。据我所知,这是出于向后兼容性目的仍然支持的非常旧的排序规则之一。我想知道使用这种“旧”归类类型是否会影响 SQL Server 的整体性能?
另外,SQL_1xCompat_CP850_CI_AS和SQL_Latin1_General_Pref_Cp850_CI_AS整理有什么区别吗?MSDN 上的描述看起来非常相似:
两者都CI_AS_KI_WI使用代码页 850,并且具有相同的排序顺序名称nocase34.850。如果我们将整理设置更改为 ,我们会有什么好处SQL_Latin1_General_Pref_Cp850_CI_AS吗?
如何列出/查看sqlcmd历史记录?
Mysql、Postgresql 和 sqlite 写入点文件:.mysql_history, .psql_history and .sqlite_history.
在使用 mssql/sql-server 时,我正在寻找等效(或近似值)。
谢谢。
PhoneSQL Server 在唯一索引中将它们视为相同的下面插入的值是什么意思?
CREATE TABLE Phone
(
Id int identity(1, 1) primary key,
Phone nvarchar(448) not null
)
go
create unique index IX_Phone on Phone(Phone)
with (data_compression = page);
go
insert into Phone Values ('?281/?263-?8400');
insert into Phone Values ('?281/?263-?8400');
select * from Phone;
drop table Phone;
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息:
消息 2601,级别 14,状态 1,第 13 行无法在唯一索引为“IX_Phone”的对象“dbo.Phone”中插入重复的键行。重复的键值为 (?281/?263-?8400)。
我们有一个用户每次使用网络位置进行批量加载时都会收到此错误消息,它会在下面引发错误。
“无法批量加载,因为无法打开文件。操作系统错误代码 3(无法检索此错误的文本。原因:15105)。”
FQDN 指定为文件的位置 (\servername\sharename\filename.txt)
当文件被复制到服务器(C:\ 驱动器)上时,查询通过 SSMS 运行良好
我已经检查了共享文件夹的所有 NTFS 权限。我已经浏览了许多建议解决方案的帖子,但没有运气。
principal_idin的含义是什么?sys.schemas它何时会与 不同schema_id?
1> SELECT LEFT(name,20), schema_id, principal_id FROM sys.schemas;
2> GO
schema_id principal_id
-------------------- ----------- ------------
dbo 1 1
guest 2 2
INFORMATION_SCHEMA 3 3
sys 4 4
db_owner 16384 16384
db_accessadmin 16385 16385
db_securityadmin 16386 16386
db_ddladmin 16387 16387
db_backupoperator 16389 16389
db_datareader 16390 16390
db_datawriter 16391 16391
db_denydatareader 16392 16392
db_denydatawriter 16393 16393
(13 rows affected)
Run Code Online (Sandbox Code Playgroud)
在内部,我看到 the schema_idcome from sys.sysclsobjswhile the principal_idcome fromsys.syssingleobjrefs的r.indepid字段。
出于某种原因,MS SQL Server 2016 批量插入会误解/翻译 Unicode 字符:
即 Notepad++ 和 xxd 显示平面文件有 0xC9,但在批量插入后,表显示“+”,并在 SQL Server 中转换为 varbinary 显示为 0x2B。备份也有 0xC9。
我正在向 MS SQL Server 2016 中批量插入 25 个平面文件。它是 15Gb 数据,我正在使用管道 ( | ) 字段分隔符和CRLF行分隔符。
我批量插入到我提供的备份的截断结构中。当我与备份进行比较时,存在差异。注意:我必须等待 25 小时才能从数据源备份,但可以在 …
我正在尝试设计数据库表来跟踪最终用户上传的文件。
文件可以在不同的上下文中上传。
每个上下文都是一个不同的表。
举个例子:
这个(人为的)场景中的实体/表是:
Employees (Id, Name) Expenses (Id, Date, RequestedRefund, RequestedByEmployeeId) Pets (Id, Name, Type, BelongsToEmployeeId)我已经有一个名为的表Files,用于跟踪有关文件本身的信息:
Files (Id, Name, Size, Extension, Folder)
我的问题是关于如何根据文件记录映射费用收据上传和宠物照片上传。我知道我可以通过两种方式做到这一点:
有一个通用映射表:GenericFileMap (FileId, ContextId, Type)
where
FileId 是文件记录的id ContextId 是我试图检索的上下文记录的 ID Type 是描述上下文本身的字段 在这种情况下,我会像这样获取员工的所有费用收据:
SELECT *
FROM Employee e
INNER JOIN Expenses ex ON e.Id = ex.RequestedByEmployeeId
INNER JOIN GenericFileMap g ON g.ContextId = ex.Id AND g.Type = 'expense'
INNER JOIN Files f ON g.FileId = f.Id
Run Code Online (Sandbox Code Playgroud)
每个实体/上下文表都有单独的映射表: …
我有几个有很多NVARCHAR(MAX)列的大表。该数据库仅供美国使用,我认为任何列中都没有任何外来字符或字母,所以我想调查一下:
NVARCHAR,VARCHAR并且NVARCHAR(MAX)看起来有些过大。我还试图限制隐式转换。
在执行此操作之前,有什么简单的方法可以确定每列是否确实只包含VARCHAR数据并且不会出现任何转换问题NVARCHAR?
sql-server datatypes varchar type-conversion sql-server-2016
我正在尝试使用 Solomon Rutzky 在其后程序集部署中提供的指导来添加“System.Messaging.dll”,并使用非对称密钥使用 UNSAFE 或 EXTERNAL_ACCESS 权限,但我在第一个障碍上失败了。
脚本的第一部分是从程序集创建证书;
CREATE CERTIFICATE [MS.NETcer] FROM EXECUTABLE FILE = 'C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Messaging.dll';
GO
Run Code Online (Sandbox Code Playgroud)
但是,当我执行此操作时,我收到错误;
Msg 15208, Level 16, State 1, Line 1
The certificate, asymmetric key, or private key file does not exist or has invalid format.
Run Code Online (Sandbox Code Playgroud)
我用来执行命令的帐户具有“sysadmin”服务器角色。这是在 SQL Server 2008 实例上。
请问有人对为什么失败有任何想法吗?
---------- 更新 1 -----------
我采纳了所罗门的建议并修改了我的脚本,使其看起来像这样;
CREATE ASYMMETRIC KEY [Key.System.Messaging] FROM EXECUTABLE FILE = 'C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Messaging.dll';
GO
CREATE LOGIN [CLR.Login.System.Messaging] FROM ASYMMETRIC KEY [Key.System.Messaging];
GO
GRANT UNSAFE ASSEMBLY TO [CLR.Login.System.Messaging];
GO
Run Code Online (Sandbox Code Playgroud)
到目前为止一切都很好。我现在运行 …
我们的 SQL Server 的排序规则设置为SQL_Latin1_General_CP1_CI_AS
我有一个要求,即我们在不同的情况下具有相同的值,但 SQL Server 会以相同的方式对待它们,因为我们的排序规则在服务器级别设置为不区分大小写。我的要求是,我需要根据一个特定查询的大小写敏感性将每个值视为不同的。我COLLATE SQL_Latin1_General_CP1_CS_AS在WHERE子句中使用来强制区分大小写。我的问题是:此排序规则是否仅应用于此查询,还是最终会在列或表级别为使用此列的所有查询更改此设置?
Create Table #tmpTest
(
id int primary key identity(1,1),
name varchar(100)
)
Insert Into #tmpTest values ('TestQuery'),('TESTQUERY'),('TEstquerY')
Select * from #tmpTest
Where name = 'TestQuery'
Select * from #tmpTest
Where name = 'TestQuery'
Collate SQL_Latin1_General_CP1_CS_AS
Run Code Online (Sandbox Code Playgroud)