标签: sql-server-2016

每次启动 SQL Server 代理作业时,都会收到错误日志

每次启动 Sql Server 作业时,都会出现以下错误。我正在使用 SQL Server 2016。没有人知道如何修复它吗?

特定于应用程序的权限设置不会向用户授予具有 CLSID {2DC39BD2-9CFF-405D-A2FE-D246C976278C} 和 APPID {DB336D8E-32E5-42B9-B14B-58AAA87SQLCEB06} 的 COM 服务器应用程序的本地激活权限给用户SID (S-1-5-80-344959196-2060754871-2302487193-2804545603-1466107430) 来自在应用程序容器中运行的地址 LocalHost (Using LRPC) Unavailable SID (Unavailable)。可以使用组件服务管理工具修改此安全权限。

sql-server-agent sql-server-2016

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

更改表“DEFAULT”未设置默认值 - SQL Server

我正在尝试更改现有列并添加整数列。在添加整数列时,我将 DEFAULT 设置为 10,但在添加列时未设置默认值

ALTER TABLE dbo.Contacts ADD Col1 INT DEFAULT 10
Run Code Online (Sandbox Code Playgroud)

我需要执行显式更新脚本以将所有过去的记录设置为默认值

而如果该列为“非空”,则所有记录的默认值为 10。

ALTER TABLE dbo.Contacts ADD Col2 INT NOT NULL DEFAULT 10
Run Code Online (Sandbox Code Playgroud)

为什么可空列未设置为默认值?在我的实际表中,我有接近 8.5 亿条记录,我的新列是可以为空的列,我试图避免在我的 ALTER 表脚本之后再进行一次更新。方法是什么?

我正在考虑创建不可为空的列,默认值为 10,然后再次将约束更改为 NULL。这是好的方法吗?还有其他方法吗?

sql-server sql-server-2012 sql-server-2016

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

SQL Server 中的 R:将数据框输出到表中

这可能有一个简单的答案,但我无法弄清楚,因为我仍然掌握在 SQL Server 中使用 R 的窍门。我有一段代码从 SQL Server 表中读取数据,在 R 中执行并返回一个数据框。

execute sp_execute_external_script
    @language=N'R',
    @script=N'inp_dat=InputDataSet
    inp_dat$NewCol=max(inp_dat$col1,inp_dat$col2)
    new_dat=inp_dat
    OutputDataSet=new_dat'
    @input_data_1=N'select * from IM_COMP_TEST_SQL2016.dbo.temp_table';
Run Code Online (Sandbox Code Playgroud)

我想将 new_dat 插入 SQL Server 表 ( select * into new_table from new_dat)。我该怎么做?

sql sql-server r sql-server-2016

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

为 MSSQL Server docker 镜像启用 XA 事务

我有用于开发的 MSSQL Server Linux docker 映像,我需要在此实例上启用 XA 事务,我进行了大量搜索,但我找到的所有教程仅展示了如何从 Windows 机器执行此操作,没有在 Linux 上执行此操作。

那么如何从命令行启用 XA 事务,或者是否有相应的配置文件。

linux sql-server sql-server-2016

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

根据行顺序获取计数

我有一个这种结构的表

Create Table Example (
[order] INT,
[typeID] INT
)
Run Code Online (Sandbox Code Playgroud)

有了这些数据:

order|type
1   7
2   11
3   11
4   18
5   5
6   19
7   5
8   5
9   3
10  11
11  11
12  3
Run Code Online (Sandbox Code Playgroud)

我需要根据订单获取每种类型的计数,例如:

type|count
7      1
11     **2**
18     1
5      1
19     1
5      **2**
3      1
11     **2**
3      1
Run Code Online (Sandbox Code Playgroud)

上下文

让我们说这张桌子是关于房子的,所以我在订单中有一个清单.所以我有

  • 订单1:红房子
  • 2:白宫
  • 3:白宫
  • 4:红房子
  • 5:一幢蓝房子
  • 6:一座蓝色的房子
  • 7:白宫

所以我需要显示信息浓缩.我需要说:

  • 我有1个红房子
  • 然后我有2个白色的房子
  • 然后我有一个红房子
  • 然后我有2个蓝房子
  • 然后我有1个白宫

因此,计数基于订单.该DENSE_RANK函数将帮助我,如果我能够在RANK重新分区更改时.

sql-server sql-server-2016

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

在没有 SQL Server 集成服务的情况下运行 SSIS 包

我们可以在没有集成服务的情况下运行 SSIS 包吗?如果是,那么步骤是什么?如果否,那么最低要求是什么。

问题陈述如下:

我正在使用 SQL Azure 数据库来存储数据。我还有 Azure VM,我需要从中安排 SSIS 包。在此 Azure VM 中,我们没有安装集成服务。我的方法是在 Windows 调度程序中使用批处理文件来调度 SSIS 包。

我已经浏览了关于此的各种主题和帖子,但没有得到正确的答案。

sql-server ssis etl sql-server-2016 ssis-2016

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

来自 SELECT FROM WHERE X NOT IN Y 的意外结果

所以...

select COUNT(*) cnt from docDocument d 
inner join tblAttachment a on d.AttachmentID = a.ID
where
a.ContainerID = 1 
Run Code Online (Sandbox Code Playgroud)

返回 6673

select COUNT(*) from tblAttachment 
where 
ContainerID = 1 
Run Code Online (Sandbox Code Playgroud)

返回 10372

select COUNT(*) cnt from docDocument d 
right join tblAttachment a on d.AttachmentID = a.ID
where
a.ContainerID = 1 
AND
d.ID IS NULL
Run Code Online (Sandbox Code Playgroud)

返回 3699,这是有意义的 10372 - 6673 = 3699

SELECT COUNT(*) FROM
(
select ID from tblAttachment a
where 
a.ContainerID = 1
Except
(
    SELECT AttachmentId from docDocument 
) …
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2016 azure-sql-database

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

数据库陷入SQL Server的单用户模式

我们的新DBA已将数据库带入单用户模式以执行分离附加操作,但错误地他关闭了该分区.从那时起,没有人能够访问该数据库.

我试图通过使用sp_who2找到会话ID,但它没有在该数据库上显示任何会话ID.

我在"Windows server 2016"上使用"SQL Server 2016 Standard Edition".

sql-server-2016

3
推荐指数
2
解决办法
6106
查看次数

如何选择两个日期与下一行和上一行之间的行

我有一个具有以下结构的表

ID  PersonID    Date
---------------------------
1   1           2017-04-01
2   1           2017-04-15
3   1           2017-05-13
4   1           2017-06-15
5   1           2017-08-13
6   1           2017-10-02
7   2           2017-05-04
8   2           2017-09-16
9   3           2017-04-23
10  3           2017-07-06
11  4           2017-06-01
Run Code Online (Sandbox Code Playgroud)

如果存在,我希望Select在每个Next和Previous行之间2017-05-01和之间行.2017-08-26PersonID

我想要这个结果:

ID  PersonID    Date
------------------------------
2   1           2017-04-15
3   1           2017-05-13
4   1           2017-06-15
5   1           2017-08-13
6   1           2017-10-02
7   2           2017-05-04
8   2           2017-09-16
9   3           2017-04-23
10  3           2017-07-06
11  4           2017-06-01
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2016

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

如何在WHERE LIKE中为多个值使用SELECT语句

我试图从表中过滤出行,其中[Description]列包含另一个表中列表中的单词.

我已经走到这一步,然后意识到我根本不知道如何做到这一点:

SELECT 
  p.Description  --- a large amount of text
FROM
  Products p
WHERE 
  p.Description NOT LIKE 
(SELECT List.Word FROM List) --- pseudo code
Run Code Online (Sandbox Code Playgroud)

所以我需要类似的东西,NOT IN但实际上却是NOT LIKE.

如果没有我必须手动提取列表中的所有单词并执行NOT LIKE '%sofa%' AND NOT LIKE '%cushion%' AND NOT LIKE '%chair%'等等,这是否可能?

sql t-sql sql-server sql-server-2016 sql-server-2017

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