小编jya*_*yao的帖子

表中的NULL值自我比较

我总是对一些神秘的 t-sql 行为感到困惑,如下所示

-- Create table t and insert values.  
use tempdb
CREATE TABLE dbo.t (a INT NULL);  
-- insert 3 values
INSERT INTO dbo.t values (NULL),(0),(1);  
GO  
set ansi_nulls off -- purposely turn off, so we can allow NULL comparison, such as null = null
go
-- expect 3 rows returned but only 2 returned (without null value row)
select * from dbo.t where a = a 
Run Code Online (Sandbox Code Playgroud)

这不是关于如何检索表中的所有行,也不是关于避免使用 ANSI_NULLS。

我只是想征求一些见解,为什么 t-sql 会这样。

sql-server t-sql sql-server-2012

13
推荐指数
3
解决办法
369
查看次数

sys.objects 列 [Type] 奇怪的值 'ST'

我在 sys.objects 中看到 [Type] 列的奇怪(未记录)值。值为“ST”,如下图(注意,dbo.Record 是一个用户表)

有谁知道这个“ST”值是什么意思?(这是在 SQL Server 2014 开发版中)

在此处输入图片说明

sql-server datatypes metadata sql-server-2014

10
推荐指数
1
解决办法
608
查看次数

为 SQL Server 2016 数据库邮件启用 TLS 1.2

我对这个问题困惑了将近 1 周。希望我们社区中有人遇到过同样的问题并且已经找到了解决方案。

所以这是我的问题:

根据我们公司的政策,我们希望数据库邮件能够在启用 TLS 1.2 和禁用 TLS 1.0 和 TLS 1.1 的情况下通过端口 25 发送电子邮件。

我们的邮件服务器是 Exchange Server 2010,我们的 SQL Server 2016(开发者和企业版)盒子有 Windows Server 2016 标准版的操作系统。

我们的 SQL Server 版本是:

select @@version
----------------------------------------
Microsoft SQL Server 2016 (SP1-CU7-GDR) (KB4057119) - 13.0.4466.4 (X64) 
    Dec 22 2017 11:25:00 
    Copyright (c) Microsoft Corporation
    Developer Edition (64-bit) on Windows Server 2016 Datacenter 10.0 <X64> (Build 14393: ) (Hypervisor)
Run Code Online (Sandbox Code Playgroud)

我们有如下所示的 DB 邮件配置。

在此处输入图片说明

问题是每当我们打开 SSL

use msdb
exec dbo.sysmail_update_account_sp @account_id=2, @enable_ssl = 1;
Run Code Online (Sandbox Code Playgroud)

我们不能发送 db …

sql-server database-mail sql-server-2016 tls-1.2

8
推荐指数
3
解决办法
1万
查看次数

升级 SQL Server 2016 R 服务(数据库内)

我只是想知道这是否可行。我已经安装了 R 服务(数据库内)和 SQL Server 2016(在 SP1+ CU1 打补丁)。

我注意到 R 服务版本是 3.2.2,您可以运行以下脚本来检查

declare @v varchar(100);
exec sp_execute_external_script @language=N'R'
, @script = N'v <- toString(getRversion())'
, @params = N'@v varchar(100) output'
, @v = @v out;

print @v;

-- returns 3.2.2
Run Code Online (Sandbox Code Playgroud)

但我也安装了 Microsoft R 客户端,并注意到它的 R 服务引擎版本为:3. 3 .2。

所以我的问题是“不SQL Server R的服务(在数据库)现在支持研究第3版3 0.2?” 如果是这样,我该如何升级它?如果没有,我想我会等到 MS 发布更新。

我阅读了MSDN,并在其中提到使用sqlBindR.exe来进行更新,但是此工具仅适用于我没有安装的 Windows R 服务器,我什至怀疑如果我安装了它,它是否会更新数据库内R服务。

sql-server upgrade sql-server-2016 r

7
推荐指数
1
解决办法
2851
查看次数

无论如何要知道何时安装了 sql server 实例?

我的环境中安装了 100 多个 sql server 实例(从 sql 2005 到 sql 2016),有什么好方法可以找到最初安装实例的时间吗?

我试图检查 [master] 数据库的创建日期,发现(至少对于 sql 2012 以后)它总是 2003 年 4 月 8 日。

唯一可能的日期是 [msdb] 创建日期,我看到它因不同的 sql server 实例而变化。(我不确定这是因为我不确定服务补丁是否会更改 [msdb] 创建日期?)

有没有其他可靠的方法可以指示 sql server 实例创建日期?我愿意使用 t-sql 或 powershell 来解决这个问题。

提前致谢。

sql-server

4
推荐指数
1
解决办法
1074
查看次数

SQL Server 权限检查何时完成?

当用户要执行一个复杂的存储过程时,其中有相当多的表/视图甚至另一个存储过程。

我的问题是:

SQL server 在生成执行计划之前,会检查用户的权限吗?

否则,如果用户首先没有EXEC此存储过程的权限,则生成执行计划本身就是一种开销成本。

如果是,在我看来,SQL Server 引擎没有任何可消耗的东西,即没有安全标识符(如存储过程本身、存储过程中的表等),SQL Server 引擎可以使用它来检查用户权限. 至少在解析完成之前,不会生成所有这些安全标识符。

那么从执行存储过程的生命周期角度来看,SQL Server 权限检查何时开始?

sql-server permissions

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

如何在sql server中找到会话的连接字符串值?

我知道有一个类似的问题之前,在SO如图所示这里 然而,这个问题的答案真的没有解决我的问题。这是我的场景,我将使用 PowerShell 进行演示。

以下代码将在我的本地 sql2016 实例上创建两个会话

#The only difference in the two connection strings is [pooling] property, the $connstr_1 has pooling=true, while the $connstr_2 has pooling=false.

$connstr_1 = "data source=localhost\sql2016; initial catalog=master; trusted_connection=true; app=ConnPoolTest; pooling=true";
$SqlConnection1 = New-Object System.Data.SqlClient.SqlConnection($connstr_1)


$connstr_2 = "data source=localhost\sql2016; initial catalog=master; trusted_connection=true; app=ConnPoolTest; pooling=false";
$SqlConnection2 = New-Object System.Data.SqlClient.SqlConnection($connstr_2)

$SqlConnection1.Open()

$SqlConnection2.Open();
Run Code Online (Sandbox Code Playgroud)

我的问题是在 sql server 端,我怎么知道哪个会话的连接字符串将池属性设置为true和哪个设置为false

sql-server connection-pooling

0
推荐指数
1
解决办法
191
查看次数