标签: sql-server-2014

识别针对给定表的所有查询?

有没有一种好方法来识别针对给定表的所有查询(扩展事件、过程缓存等)?

sql-server sql-server-2014

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

有没有办法为 UNIQUE NONCLUSTERED 索引添加 INCLUDE?

我们有一个包含 4 列的表(示例):

create TABLE [dbo].[myTable]
(
        [Id] BIGINT NOT NULL,
        [Id2] SMALLINT NOT NULL,
        [Id3] SMALLINT NOT NULL,
        [IdUnique] UNIQUEIDENTIFIER NOT NULL,
        [CreateDate] DATETIME NOT NULL,
        CONSTRAINT [PK_MyTable_Id_Id2_Id3] PRIMARY KEY CLUSTERED ([Id], [Id2], [Id3]),
        CONSTRAINT [UQ_MyTable_IdUnique] UNIQUE NONCLUSTERED ([IdUnique] ASC )  
)
Run Code Online (Sandbox Code Playgroud)

这个想法是在 WHERE 中使用 IdUnique 来检索 ID、ID2 和 ID3:

在此输入图像描述

但显然我们正在进行键查找。

如何在唯一非聚集索引上包含包含列?

我找不到与此相关的任何内容。

index sql-server constraint sql-server-2014

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

有没有办法删除插入的数据,反之亦然?

我正在尝试在同一查询中插入数据然后删除数据。

我试图将其分块删除,以免导致日志问题:

DECLARE @BatchSize INT
SET @BatchSize = 100000

WHILE @BatchSize <> 0
BEGIN 
   
DELETE (@BatchSize) TABLE1 
WHERE   LogType = 'LOGTYPE'
AND     TABLE1.Id NOT IN (SELECT Id FROM TABLE2)
AND     TABLE1.Id IN     (SELECT Id FROM DifferentDB..TABLE3)
    
   SET @BatchSize = @@rowcount 
END
Run Code Online (Sandbox Code Playgroud)

但同样的查询,我想先在辅助数据库中插入数据,然后删除。

是否可以在没有触发器的情况下实现?(插入、删除……)

我也愿意接受更好的分块删除方法,我只是凭记忆得到了这个方法。

sql-server t-sql sql-server-2014

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

将非空间表与非空间列上的空间表连接时提高查询响应速度

我有一个经常更新影响某些几何图形的事件的表。几何区域是固定的,但可能有一个事件同时影响多个区域,因此两者之间存在多对多的关系。单个区域也可能同时受到多个事件的影响。

例如:

事件ID 区域编号
1 15
1 31
2 46
3 46
3 55
4 15

这些区域在我的表中表示为 ID 值。我需要在空间上表示这些值,因此我需要将这些值连接到包含s 和几何图形的event_id and area_id查找表。area_id不幸的是,这些表位于同一 SQL Server 2014 实例上的两个独立数据库中。

问题是这个连接过程非常慢;返回 18k-24k 行需要 90 秒到 3 分钟不等,具体取决于当前有多少事件处于活动状态。几何查找表包含 84k 行。

事件表结构(为了简单起见,删除了一些附加列):

USE Events_DB;
CREATE TABLE [dbo].[Events](
    [EVENTS_ID] [bigint] NOT NULL,
    [AREA_ID] [bigint] NOT NULL,
    [START_DATE_TIME] [smalldatetime] NULL,
    [END_DATE_TIME] [smalldatetime] NULL,
 CONSTRAINT [PK_Events] PRIMARY KEY CLUSTERED 
(
    [EVENTS_ID] ASC,
    [AREA_ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS …
Run Code Online (Sandbox Code Playgroud)

sql-server execution-plan spatial sql-server-2014 query-performance

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

我可以将 SQL Server 2008 R2 Standard 升级到 SQL Server 2014 Developer 吗?

是否有将 SQL Server 2008 R2 Standard 升级到 SQL Server 2014 Developer 的迁移路径?

如果有,有什么痛点吗?

如果没有,你会如何建议我继续?

此问题的上下文是一台运行 SQL Server 2008 R2 Standard 并希望现在运行 SQL Server 2014 Developer 的 Developer 计算机。

2014年 7 月11 日更新- 接受的答案对我有用。我将 SQL Server 2014 Developer 作为命名实例安装,然后按照Zasz 的 StackOverflow 答案将命名实例转换为默认实例。

sql-server migration sql-server-2008-r2 installation sql-server-2014

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

SSRS(2008 R2 到 2014)迁移问题运行报告

这是我有史以来的第一个 StackExchange 问题,很抱歉,如果我有什么问题......我搜索并找到了一篇相当有用的文章,让我走到了这一步,但我没有找到解决我目前看到的问题。

正如标题所述,我在从 SSRS 2008 R2 迁移后在 SSRS 2014 上运行报告时遇到问题。一些背景信息:

  1. SQL Server 2008 R2 托管在 Win 2008 R2 服务器上
  2. 新服务器(SQL Server 2014)是Win Server 2012(不是metro界面的忠实粉丝)
  3. 我添加了从 2008 年到 2014 年使用备份/恢复方法的数据库
  4. 所有备份/恢复顺利完成。
  5. 我可以查看其他数据库和 ReportServer DB 中的所有数据和 SP
  6. 我从 SQL 报告服务配置管理器备份它后导入了密钥,所有这些都成功完成。

所以问题在于,当我在IE中连接到SSRS home时,我可以浏览和管理所有内容,但没有任何东西可以运行。我已经到了可以输入参数的地步,但收到消息:

“数据集'DataSet1'的查询执行失败。(rsErrorExecutingCommand)找不到存储过程'storeprocedurename'”

在服务器上的报表生成器中打开它们后,当我右键单击数据集查看属性时,我实际上无法登录到数据集的数据源(数据集嵌入在报表中)。我尝试创建一个新的数据源,但是当需要添加数据集时,登录到它也证明了一个问题 - 尽管它能够成功测试到新数据源的连接。所以我的猜测是数据源没有连接到新的sql server数据库?不知所措,抓着稻草。

另一个奇怪的事情是我导入的数据库没有启用 sys 帐户,我也没有选择启用它。

如果有人对我可能搞砸的事情有任何见解,或者我需要修改什么来纠正这个问题,我将非常感激。在此先感谢您的帮助。

sql-server migration ssrs sql-server-2014

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

sql server 认证登录失败

我的 Windows Server 2012 R2 上有 SQL Server 2014。我可以使用 Windows 身份验证从 Management Studio 本地连接到 SQL Server。

我决定切换到 SQL Server 身份验证(因为我需要从其他计算机访问)。我使用 Management Studio 创建了新的登录,但收到错误:尝试连接时登录失败。

然后我更改了 sa 的密码并尝试以 sa 身份登录,但再次出现相同的错误:

在此处输入图片说明

我重新启动了 SQL Server,但没有帮助。我做错了什么?

来自错误日志:用户“sa”登录失败。原因:尝试使用 SQL 身份验证登录失败。服务器配置为仅用于 Windows 身份验证。

authentication sql-server connectivity sql-server-2014

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

将子字符串转换为数字 SSIS

我有一个固定宽度的文本文件,我通过 SSIS 引入。作为 SQL Server 输入的一部分,我正在抓取一串字符并尝试将它们转换为派生列中的数字。
数据如下所示:

02 PR000000000000017943 0287801709

我需要获取 17943 并将其转换为 179.43

我尝试过的表达方式是:

(DT_NUMERIC,18,2)(SUBSTRING(EntireRow,10,18)
(DT_NUMERIC,18,2)TRIM(SUBSTRING(EntireRow,10,18))            
Run Code Online (Sandbox Code Playgroud)

我不断收到以下错误:

组件“派生列”(2) 上的 ProcessInput 方法在处理输入“派生列输入”时失败,错误代码为 0xC0209029。

我已经看过了,但无法找到解决方案。

sql-server sql-server-2014 ssis-2014

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

添加新列后表大小不会改变

我正在尝试检查添加具有默认值的新列后表大小将如何增加。

我使用以下默认值:NULL, ''(空字符串)和some text(一些随机文本)`但似乎表大小没有改变。

我正在使用以下语句:

EXEC sp_spaceused '[Table_A]';

ALTER TABLE [dbo].[Table_A]
ADD [Loops] NVARCHAR(900)
CONSTRAINT [DF_Loops] DEFAULT('XXX') WITH VALUES;

EXEC sp_spaceused '[Table_A]';

ALTER TABLE [dbo].[Table_A]
DROP CONSTRAINT [DF_Loops]

ALTER TABLE [dbo].[Table_A]
DROP COLUMN [Loops];
Run Code Online (Sandbox Code Playgroud)

sp_spaceused总是返回:

name                                               rows                 reserved           data               index_size         unused
------------------------------------------------- -------------------- ------------------ ------------------ ------------------ ------------------
Table_A                                            73540994             8701688 KB         6658544 KB         2042976 KB         168 KB
Run Code Online (Sandbox Code Playgroud)

谁能告诉我做错了什么?

sql-server size alter-table sql-server-2014

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

几个外键和级联删除SQL Server

在此处输入图片说明 在 SQL Server 2014 中,我试图在 3 FK 上添加CASCADE DELETING(我想实际上将字段设置为 null,但相同)。如果我在一个关系中添加级联删除,它工作正常。如果我添加更多级联删除,则不起作用(检测到循环错误消息)。

在上图中,您可以看到用户表和任务表(西班牙语中的“Tareas”)。所以,我需要完成的是,当用户被删除时,我需要将 Tasks 中的标记字段设置为 NULL。

这在数据库中很常见,所以我认为有一种方法可以解决这个问题。

就我而言,我的大多数表都有一对字段,其中包含创建或修改记录的用户的 UserId。所以,我需要解决这个模式来将它应用到几个地方。

foreign-key sql-server sql-server-2014 cascade

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