我们有一个包含 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:
但显然我们正在进行键查找。
如何在唯一非聚集索引上包含包含列?
我找不到与此相关的任何内容。
我正在尝试在同一查询中插入数据然后删除数据。
我试图将其分块删除,以免导致日志问题:
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)
但同样的查询,我想先在辅助数据库中插入数据,然后删除。
是否可以在没有触发器的情况下实现?(插入、删除……)
我也愿意接受更好的分块删除方法,我只是凭记忆得到了这个方法。
我有一个经常更新影响某些几何图形的事件的表。几何区域是固定的,但可能有一个事件同时影响多个区域,因此两者之间存在多对多的关系。单个区域也可能同时受到多个事件的影响。
例如:
| 事件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
是否有将 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
这是我有史以来的第一个 StackExchange 问题,很抱歉,如果我有什么问题......我搜索并找到了一篇相当有用的文章,让我走到了这一步,但我没有找到解决我目前看到的问题。
正如标题所述,我在从 SSRS 2008 R2 迁移后在 SSRS 2014 上运行报告时遇到问题。一些背景信息:
所以问题在于,当我在IE中连接到SSRS home时,我可以浏览和管理所有内容,但没有任何东西可以运行。我已经到了可以输入参数的地步,但收到消息:
“数据集'DataSet1'的查询执行失败。(rsErrorExecutingCommand)找不到存储过程'storeprocedurename'”
在服务器上的报表生成器中打开它们后,当我右键单击数据集查看属性时,我实际上无法登录到数据集的数据源(数据集嵌入在报表中)。我尝试创建一个新的数据源,但是当需要添加数据集时,登录到它也证明了一个问题 - 尽管它能够成功测试到新数据源的连接。所以我的猜测是数据源没有连接到新的sql server数据库?不知所措,抓着稻草。
另一个奇怪的事情是我导入的数据库没有启用 sys 帐户,我也没有选择启用它。
如果有人对我可能搞砸的事情有任何见解,或者我需要修改什么来纠正这个问题,我将非常感激。在此先感谢您的帮助。
我的 Windows Server 2012 R2 上有 SQL Server 2014。我可以使用 Windows 身份验证从 Management Studio 本地连接到 SQL Server。
我决定切换到 SQL Server 身份验证(因为我需要从其他计算机访问)。我使用 Management Studio 创建了新的登录,但收到错误:尝试连接时登录失败。
然后我更改了 sa 的密码并尝试以 sa 身份登录,但再次出现相同的错误:

我重新启动了 SQL Server,但没有帮助。我做错了什么?
来自错误日志:用户“sa”登录失败。原因:尝试使用 SQL 身份验证登录失败。服务器配置为仅用于 Windows 身份验证。
我有一个固定宽度的文本文件,我通过 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。
我已经看过了,但无法找到解决方案。
我正在尝试检查添加具有默认值的新列后表大小将如何增加。
我使用以下默认值: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 2014 中,我试图在 3 FK 上添加CASCADE DELETING(我想实际上将字段设置为 null,但相同)。如果我在一个关系中添加级联删除,它工作正常。如果我添加更多级联删除,则不起作用(检测到循环错误消息)。
在上图中,您可以看到用户表和任务表(西班牙语中的“Tareas”)。所以,我需要完成的是,当用户被删除时,我需要将 Tasks 中的标记字段设置为 NULL。
这在数据库中很常见,所以我认为有一种方法可以解决这个问题。
就我而言,我的大多数表都有一对字段,其中包含创建或修改记录的用户的 UserId。所以,我需要解决这个模式来将它应用到几个地方。
sql-server ×10
sql-server-2014 ×10
migration ×2
alter-table ×1
cascade ×1
connectivity ×1
constraint ×1
foreign-key ×1
index ×1
installation ×1
size ×1
spatial ×1
ssis-2014 ×1
ssrs ×1
t-sql ×1