小编Sol*_*zky的帖子

运算符“&”如何在sql server中工作?

当有人这样做时,我正在我们的一台测试服务器上运行跟踪:

在此处输入图片说明

我可以在跟踪中捕获的查询之一是:

declare @UserOption int
select @UserOption=convert(int, c.value) from sys.configurations c where c.name='user options'

SELECT
CAST(@UserOption & 1 AS bit) AS [DisableDefaultConstraintCheck],
CAST(@UserOption & 2 AS bit) AS [ImplicitTransactions],
CAST(@UserOption & 4 AS bit) AS [CursorCloseOnCommit],
CAST(@UserOption & 8 AS bit) AS [AnsiWarnings],
CAST(@UserOption & 16 AS bit) AS [AnsiPadding],
CAST(@UserOption & 32 AS bit) AS [AnsiNulls],
CAST(@UserOption & 64 AS bit) AS [AbortOnArithmeticErrors],
CAST(@UserOption & 128 AS bit) AS [IgnoreArithmeticErrors],
CAST(@UserOption & 256 AS bit) AS [QuotedIdentifier],
CAST(@UserOption & …
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql sql-server-2014 operator bitwise-comparison

6
推荐指数
1
解决办法
2万
查看次数

我们可以从 SQL Server 中的 .NET 程序集调用哪些类型的方法

在 SQL Server 中注册 DLL 后(在 Programmability -> Assemblies 中),我们可以从 SQL Server 中的 .NET 程序集中调用任何类型的方法吗?还是只是静态的?

sql-server sql-clr

6
推荐指数
1
解决办法
604
查看次数

查询以查找给定范围内包含 ASCII 字符的行

我正在使用另一个主题的一些脚本,但接受的答案不适用于我的所有数据场景。我会问我关于如何检查非 Ascii 字符的原始帖子的问题,但我还没有足够的声誉来评论或投票。

问题:

我的测试

我使用示例数据、其中一个答案中的存储过程以及用于演示该问题的查询创建了SQL Fiddle

查询 1:sample_table

-- Note: The "bad dash" row has char(150)

SELECT * FROM sample_table;

+-------------------+
|    DataColumn     |
+-------------------+
| test - good dash  |
| test – bad dash   |
+-------------------+
Run Code Online (Sandbox Code Playgroud)

查询2:其它答案约翰表示“坏破折号”行含有炭(150):

SELECT dbo.Find_Invalid_Chars(DataColumn) [Invalid Characters]
FROM sample_table
WHERE dbo.Find_Invalid_Chars(DataColumn) IS NOT NULL;

+----------------------+
|  Invalid Characters  |
+----------------------+
| test [150] bad dash  |
+----------------------+
Run Code Online (Sandbox Code Playgroud)

查询3: …

sql-server collation t-sql character-set encoding

6
推荐指数
1
解决办法
3502
查看次数

由*正确*服务主密钥加密的数据库主密钥?

我的客户经常运行我们将数据库从 prod 环境移动到较低环境的过程(使用 prod 数据库刷新 QA 等)。这些 DB 上有数据库主密钥。我们将这些重新加密到目标服务器上的服务主密钥中没有问题,但这是烦人的部分:

  1. sys.databases 表示 DMK 已经加密(尽管使用源服务的 SMK)
  2. 我们无法找到判断 DMK 是否由当前 SMK 加密的方法(检查所有加密 DMV)
  3. sys.symmetric_keys 中的 SMK 签名始终为 0x01(跨服务器不唯一)。

这本身不是问题。解决方法始终是将 DMK 重新加密为 SMK。我们只想知道它是否已经完成。任何人都有任何技巧吗?

谢谢,埃里克

security sql-server t-sql sql-server-2008-r2 encryption

5
推荐指数
1
解决办法
1071
查看次数

SQL Server:资源数据库的整理

我正在尝试使用停用词,以便全文索引器跳过某些单词。我可以在表sys.fulltext_stopwords 中添加这些停用词。

尝试在 SQL Server 2012 中获取列表时遇到错误。我正在执行以下(简化的)查询:

SELECT sys.fulltext_stopwords.stopword 
FROM sys.fulltext_stopwords     

UNION 

SELECT sys.fulltext_system_stopwords.stopword 
FROM sys.fulltext_system_stopwords;
Run Code Online (Sandbox Code Playgroud)

我得到的错误信息是:

“无法解决 UNION 操作中“Latin1_General_CI_AS”和“Latin1_General_BIN”之间的排序规则冲突。”

我的查询中第一个 SELECT 语句的数据库规则Latin1_General_CI_AS数据库也是如此。

在什么地方Latin1_General_BIN 从何而来?看起来 sys.fulltext_system_stopwords 表有不同的排序规则,但为什么呢?

编辑

我可以通过在查询中使用COLLATE来“解决”我的错误,如下所示:

SELECT  sys.fulltext_stopwords.stopword COLLATE DATABASE_DEFAULT
FROM sys.fulltext_stopwords 

UNION 

SELECT sys.fulltext_system_stopwords.stopword COLLATE DATABASE_DEFAULT
FROM sys.fulltext_system_stopwords 
Run Code Online (Sandbox Code Playgroud)

我看到系统停用词存储在资源数据库中,可以解释整理的差异。下一个问题是:为什么资源数据库中的排序规则与默认排序规则不同?

sql-server collation full-text-search sql-server-2012

5
推荐指数
1
解决办法
5259
查看次数

在 SQL Server 2012 中的 TSQL 函数中使用 XSD 验证 XML?

我需要在 TSQL 中使用 XSD 验证 XML。为了使此任务半自动化,我需要在 TSQL 函数中执行此操作。

为了进行验证,我必须将值设置为 XML,如果它无效,我将收到一个错误。

我的问题是在 TSQL 函数内部我不能使用TRY / CATCH. 这是正确的方式吗,如果有可能做到这一点?

xml t-sql sql-server-2012 functions sql-clr

5
推荐指数
1
解决办法
917
查看次数

可以在不重建索引的情况下更改特定表的填充因子吗?

我一直在四处挖掘,但没有任何运气。

SQL Server 2008:是否可以在不重建整个表的情况下调整特定聚集索引/表的填充因子?

例如,如果它有 4 亿条记录,我们是否可以调整填充因子并让 SQL Server 在所有尚未超过该限制的页面(以及新拆分)上使用新的填充因子,然后调整已超出该限制的页面?索引维护期间超限?

是否可以预先定义在下一次索引维护期间应该构建索引的填充因子?

sql-server-2008 sql-server clustered-index fill-factor index-maintenance

5
推荐指数
1
解决办法
2422
查看次数

为什么我的 UTF-8 文档在 Azure Data Lake Analytics 中引发 UTF-8 编码错误?

我有一个从未知来源系统以 gunzip 压缩的文档。它是使用 7zip 控制台应用程序下载和解压缩的。该文档是一个 CSV 文件,似乎以 UTF-8 编码。

然后在压缩后立即上传到 Azure Data Lake Store。然后有一个 U-SQL 作业设置,只需将它从一个文件夹复制到另一个文件夹。此过程失败并引发值的 UTF-8 编码错误:ée

测试

我从商店下载了该文档并删除了所有记录,但带有 Azure 标记值的记录除外。在 Notepad++ 中,它将文档显示为 UTF-8。我再次将文档保存为 UTF-8 并将其上传回商店。我再次运行该过程,该过程成功,该值为 UTF-8

我在这里缺少什么?原始文档是否可能不是真正的 UTF-8?是否还有其他原因导致误报?我有点困惑。

可能性

  • 文件不是真正的UTF-8,需要重新编码
  • 也许上传文件的方法是重新编码
  • 也许 7zip 重新编码不正确

环境/工具

  • 视窗服务器
  • 蟒蛇 2.7
  • Azure 数据湖存储
  • Azure 数据湖分析
  • 7Zip.exe
  • gz
  • Azure API

USQL

只是定义架构的基本 USQL 作业然后将所有字段选择到一个新目录。除了省略标题之外,不会发生任何转换。该文件是 CSV,用逗号分隔的字符串中的双引号。无论数据类型如何,架构都是字符串。尝试的提取器是 TEXT 和 CSV,两者都设置为编码:UTF8,即使根据系统上的 Azure 文档,两者都默认为 UTF8。

其他注意事项

  1. 该文档过去曾上传到 BLOB 存储,并通过 Polybase 以相同方式导入 Azure 数据仓库,没有出现错误。
  2. 导致 UTF-8 编码错误的值是在 100 万条其他记录中乱码的 URL。
  3. 即使它是一个 UTF-8 文档,它看起来也有 ASCII 字符。
  4. 当我将其转换为 ANSI …

import encoding hadoop unicode azure

5
推荐指数
1
解决办法
3648
查看次数

与 xp_cmdshell 一起使用时调用 SQLCMD 不起作用

我正在尝试从一堆服务器获取磁盘空间报告并将它们插入到 sql 表中..

下面是我正在尝试做的示例,服务器名称将从表中填充并作为逗号分隔列表传递。即使传递一台服务器也有相同的结果

set @ps = 'powershell.exe -noexit -c "

$computers=Get-WmiObject -Class Win32_Volume '+@servernames+'
foreach($computer in $computers) 
{ 
$pscomputername=$computer.pscomputername 
$name=$computer.name 
$capacity=$computer.capacity 
$freespace=$computer.freespace 
$Label=$computer.Label 

$insertquery=" 
INSERT INTO [dbo].[temp_disksdata] 
           (
           [servername] ,
           [DiskName] ,
           [Capacity(GB)] ,
           [FreeSpace(GB)],
           [label]
           )
     VALUES 
           (''$pscomputername'' ,
           ''$name'' ,
           ''$capacity'',
           ''$freespace'',
           ''$Label''
           ) 
GO
" 

Invoke-SQLcmd  -query $insertquery -ServerInstance ''someserver'' -Database dbname

}

"';
Run Code Online (Sandbox Code Playgroud)

现在我尝试将变量传递给 xp_cmdshell,如下所示

execute xp_cmdshell @ps;
Run Code Online (Sandbox Code Playgroud)

当在 SSMS 中调用时,上面返回 null,但在 powershell 中工作..

任何想法为什么?

以下是我尝试过的一些事情

1. shell 和 ssms 都使用相同的帐户(admin) 2.
尝试了多种方法,例如导入模块
3.XP_CMDshell 有效,但这仅针对此查询返回 …

sql-server powershell sql-server-2012 xp-cmdshell

5
推荐指数
1
解决办法
1887
查看次数

SQL Server 中选择查询的区分大小写排序规则

我们的 SQL Server 的排序规则设置为SQL_Latin1_General_CP1_CI_AS

我有一个要求,即我们在不同的情况下具有相同的值,但 SQL Server 会以相同的方式对待它们,因为我们的排序规则在服务器级别设置为不区分大小写。我的要求是,我需要根据一个特定查询的大小写敏感性将每个值视为不同的。我COLLATE SQL_Latin1_General_CP1_CS_ASWHERE子句中使用来强制区分大小写。我的问题是:此排序规则是否仅应用于此查询,还是最终会在列或表级别为使用此列的所有查询更改此设置?

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)

sql-server query collation t-sql sql-server-2012

5
推荐指数
1
解决办法
1131
查看次数