Unicode代码点9619是一个叫“深色”字符:?(http://unicode-table.com/en/search/?q=9619)。
使用SQL_Latin1_General_CP1_CI_AS排序规则和 1252 代码页,我希望将该 Unicode 字符转换/转换为非 Unicode 数据类型会导致问号 ( ?),因为代码页 1252 似乎不包含此字符,这似乎是 SQL Server 的无法进行转换时的行为。
所以我的问题是:为什么 SQL Server 将此字符转换为 ASCII 代码 166,即“管道,垂直竖线”:¦?
SELECT NCHAR(9619), CAST(NCHAR(9619) AS CHAR(1)), ASCII(CAST(NCHAR(9619) AS CHAR(1)))
Run Code Online (Sandbox Code Playgroud) 我有一个在 SQL-Server 2012 DBMS 上运行的数据库。考虑到运行 SQL Server 的服务器不是网络域的一部分。当我执行这个 sql 命令时
ALTER DATABASE myDatabase SET TRUSTWORTHY ON;
Run Code Online (Sandbox Code Playgroud)
服务代理队列(早期设置和工作)接收消息,但与队列关联的活动存储过程没有启动。消息继续流入队列,但没有其他任何事情发生。在 SQL SERVER 日志中,我发现了这条消息
在队列“proofSCHEMA.myQueue”上运行的激活过程“proofSchema.mySP”输出以下内容:“主数据库中记录的数据库所有者 SID 与数据库“myDatabase”中记录的数据库所有者 SID 不同。您应该通过使用 ALTER AUTHORIZATION 语句重置数据库“myDatabase”的所有者来纠正这种情况。
如果我在网络域内的机器上运行相同的配置,则一切正常。
我不明白发生了什么以及为什么值得信赖的使用服务代理队列。
我有一个奇怪的安全问题。我有一个用户在 SQL 2016 服务器上使用 SSMS 18.2。他们是 db_datareader 的成员,但是当他们在 Object Explorer Details 中拉出Row Count列时,它是空白的。尽我所知,它需要 DBO 才能显示行数。
这是一个错误还是故意的?有谁知道是否有较低级别的权限可以提供此行数?我知道有很多其他方法可以获得行数,例如sys.partitions,但是用户坚持认为他们想要使用 OED 窗口。
题:
我正在尝试创建一个(自签名)证书并跨多个数据库和实例进行部署。
我创建和备份证书:
USE MASTER
CREATE CERTIFICATE DavesCert ENCRYPTION BY PASSWORD ='S3creT!' WITH SUBJECT = 'The master cert'
BACKUP CERTIFICATE DavesCert TO FILE = 'd:\DavesCert.cer'
WITH PRIVATE KEY ( DECRYPTION BY PASSWORD = 'S3creT!' ,
FILE = 'd:\DavesCert.pvk' ,
ENCRYPTION BY PASSWORD = 'S3creT!' );
Run Code Online (Sandbox Code Playgroud)
我用
USE FOO
GO
CREATE CERTIFICATE ERecruitStatsGatheringCert
FROM FILE = 'd:\DavesCert.cer'
WITH PRIVATE KEY (FILE = 'd:\DavesCert.pvk',
DECRYPTION BY PASSWORD = 'S3creT!')
Run Code Online (Sandbox Code Playgroud)
并收到以下错误:“请在数据库中创建主密钥或在执行此操作之前在会话中打开主密钥。”
我不想创建数据库主密钥。我很高兴根据需要通过密码解密证书。
背景: SaaS 应用程序。数据库和实例之间的多对多关系。
我需要每个数据库都能够通过执行一个存储过程来查询它自己的统计信息,该存储过程包含对 DMV 的一些调用以返回统计信息。
应用程序在低权限帐户下运行。DMV 需要 VIEW SERVER STATE …
怎么COLLATE用UNION?我想合并 2 个表(都具有相同的列和相同的类型:)varchar,int, int, decimal。
我收到以下错误:
sg 468, Level 16, State 9, Line 1 无法解决 UNION 操作中“Serbian_Latin_100_CI_AS”和“Croatian_CI_AS”之间的排序冲突。
我的 SQL 语句:
select * from #IA_BIH
union
select * from #IA_MNE
Run Code Online (Sandbox Code Playgroud)
我应该在哪里插入collate database_default?我尝试了不同的组合,但没有奏效。
所以,我知道所有关于 Replace 函数和 char(0) 的错误。
我有一列 ( NVARCHAR(128)) 有一些NCHAR(0x0000)来自错误导入的字符。
我正在使用 SQL Server 2008 R2。
该列的排序规则是:SQL_Latin1_General_CP1_CI_AS。
我已经尝试了所有可能在网上找到的东西,但没有任何东西可以从列中取出臭气熏天的 char(0) 字符。
这是我的最新尝试,结果是 BAFFLING(sql server 中的错误?)。
我有一个循环遍历每个字符并用特定字符替换 0x0000 的函数。
ALTER FUNCTION dbo.ReplaceCharZero
(
@testString NVARCHAR(MAX),
@charToReplaceWith NCHAR(1) = ' '
)
RETURNS NVARCHAR(MAX)
AS
BEGIN
DECLARE
@i INT = 1 ,
@fixedString NVARCHAR(MAX) = ''
WHILE @i <= LEN(@testString)
BEGIN
IF SUBSTRING(@testString, @i, 1) = CHAR(0x00)
BEGIN
--PRINT 'Found' + CAST(@i AS VARCHAR)
SET @fixedString = @fixedString + @charToReplaceWith …Run Code Online (Sandbox Code Playgroud) 我正在使用 SQL Server 2008 R2 并且我想将日语字符存储在我的表的列之一中。
说我想存储日语名字,我怎样才能做到这一点?有没有简单的方法?
在触发器中,我试图创建一个唯一的表名(使用NEWID()),我可以存储在插入和删除的表中找到的数据。
Declare @NewID varchar(50) = Replace(convert(Varchar(50),NEWID()),'-','')
Declare @SQLStr varchar(8000)
Set @SQLStr= 'Select * into [TMPIns' + @newID + '] from inserted'
Exec (@SQLStr)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:无效的对象名称“插入”
我知道我可以做到:
Select * into #inserted from inserted
Set @SQLStr= 'Select * into [TMPIns' + @newID + '] from #inserted'
Exec (@SQLStr)
Run Code Online (Sandbox Code Playgroud)
但是我不想使用 TempDB,因为这些表会变得很大,而且我也觉得它是多余的。有没有办法避免创建#inserted?
请原谅这里任何定义的松散,但我试图探索一个简单的概念。
一个主键唯一标识一行。表中可能还有其他列具有唯一值,因此它们也可以唯一标识一行(候选键),但主键是为任务指定的。
使主键更有用的属性包括:
由于这些原因,我通常建议主键没有内在价值,因此永远没有理由更改或回收值。也就是说,它应该是没有意义的。
我见过包含某种代码的主键,例如基于名称的客户端代码。明显的问题是 (a) 如果客户端名称更改,那么 PK 也应该更改,以及 (b) 与具有相似名称的客户端发生冲突的风险太大。
半个例外是使用自动递增的数字,它具有序列号的次要含义。但是,它仍然很稳定。
问题是,在什么情况下,如果有的话,最好使用具有其他实际含义的主键?也就是说,PK应该是任意的,并且你通常可以通过序列号获得的建议有什么问题吗?
我偶尔会在 SQL 错误日志中注意到这个错误:
由于内存压力,spid20s,Unknown,AppDomain 79 (master.sys[runtime].78) 被标记为卸载。
我正在使用 SQL Server 2016,SP1 CU5(我正在推动修补,但公司拒绝)。
我读过的所有内容都指向非 CLR 特定的内存压力。有关于更改MemToLeave启动参数中的设置的建议。对于较新版本的 SQL Server,这仍然是这种情况,还是有其他建议?
sql-server ×9
collation ×4
unicode ×3
security ×2
sql-clr ×2
certificate ×1
dynamic-sql ×1
encoding ×1
error-log ×1
permissions ×1
primary-key ×1
signature ×1
ssms ×1
t-sql ×1
trigger ×1
union ×1