标签: sql-server-2016

将数据从一个表移动到另一个表而不会丢失数据

我有一个当前保存数百万条记录的日志表。我想在那个表上启用分区,所以我现在做的是:

  1. 创建了分区函数和分区方案。
  2. 在该分区方案上创建了一个具有相同结构的空表。
  3. 从当前日志表复制的数据从这个时间点(让我们称之为T1)倒退到新的分区表。

接下来的步骤将是最后剩余的记录从复制T1Tnow和重命名这两个表,以便应用程序开始写入新的分区表。

当然日志表经常被访问,所以我的问题是:

如何确保在此过程中不会丢失任何数据?我是否可以做到让用户不会注意到任何事情,或者我是否必须在这短暂的时间内停止应用程序?或者我可以阻止该表以便应用程序继续运行吗?如果是这样,如何?

sql-server migration best-practices partitioning sql-server-2016

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

在 Enterprise 与 Standard 上使用 R 服务的确切好处是什么?

我目前正在使用SQL Server 2016 SP标准版并想安装 R 服务。在文件说,一个独立的安装只允许在企业(Machine Learning Server (Standalone))。

另外,我发现了一个帖子,那个人说在标准上我不能使用并行操作并且有内存限制:

在此处输入图片说明

谁能说出确切的内存/处理器限制是什么?

我需要诸如使用大量 R 计算之类的细节,现在的测试表明,标准版中的实现并没有像我希望的那样工作。

sql-server t-sql sql-server-2016 r

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

使用 SSIS 将长列导出到平面文件的问题

我们有一个 SSIS 包,它将生成供 Google Big Query 使用的文件。这些文件将是 gzip 压缩的 .tsv 文件。

要求之一是文件必须是 UTF-8。我们已在平面文件目标中设置它,使其为 65001 - UTF-8。在此之后,生成的 gzip 文件将正确用于 Big Query。

现在的问题是某些字段的字符长度高达 21,000 个字符。DT_WSTR 不允许这个大小。

将平面文件目标字段更改为 DT_NTEXT 会产生以下错误消息

错误:0xC020802E at 14_3 Data Flow into MyTSV, Flat File Destination MyDestination [12]:“Flat File Destination MyDestination.Inputs[Flat File Destination Input].Columns[Value]”的数据类型是 DT_NTEXT,ANSI 不支持文件。改用 DT_TEXT 并使用数据转换组件将数据转换为 DT_NTEXT。

我读过的所有解决方案都涉及转换回 DT_WSTR 或将代码页改回 1252,由于 Big Query 代码页要求和数据长度,这不是一个选项。这个问题还有其他解决方案吗?

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

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

在分布式可用性组中混合使用 SQL Server 2016 和 2017

我有一个由 2 个 SQLServer 2016 实例(WSFC 中的 2 个 Windows 2016 服务器)组成的旧可用性组 我还有 2 个新的 SQLServer 2017 实例(2 个 Windows Server 2016),我最初想加入 2016 AG。

这是一个 0 停机迁移场景,一旦数据库与 2017 年的数据库对齐,2016 年的服务器应该被解雇。

令我非常失望的是,我发现无法将 2017 实例加入现有的 2016 AG,但我无法承担停止生产、获取和恢复备份、等待数据库同步、更改名称(以及可能的新 AG 的 ip) 与原始 AG 匹配,除非作为最后一个资源......

然后我遇到了名为“Distributed AG Group”的 2016 年新服务,我开始考虑将它用于我的迁移场景......基本上是这样的:

  1. 使用 SQL 2017 实例创建一个新的 AG
  2. 在原来的2016 AG和新的2017 AG之间创建一个分布式AG(应用继续连接2016的监听器)
  3. 等待 DB 同步在 2017 AG 中发生
  4. 以 2017 AG 为主
  5. 从分布式 AG 中删除 2016 AG(应用程序停机时间短)
  6. 更改 2017 监听器的名称和 ip(应用程序再次启动)
  7. 移除分布式AG

是否可行?我可以在分布式 AG 中混合 2016 和 2017 …

sql-server availability-groups sql-server-2016 sql-server-2017 distributed-availability-groups

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

如何以最少的停机时间从大型(700M 行)热(每秒多个事务)表中删除列?

我的研究表明,我可以在短时间内删除表中的一列(前提是我获得了排他锁),因为这只是元数据更改。

该表有两个不同的服务,不断插入和更新记录。太热了。如果不开发这种活动级别的完整复制环境,我怎么能确保像这样的陈述

ALTER TABLE x DROP COLUMN y 
Run Code Online (Sandbox Code Playgroud)

会成功获得排他锁,快速做drop,然后解锁表吗?

SQL Server 将如何将此请求排队(例如,先进先出)?我能确定 DROP COLUMN 真的只需要几分钟吗?

在 PROD 中长时间锁定此表是不可接受的,因此我试图避免出现意外。

其他注意事项:稍后我将在线重新索引以对索引进行碎片整理并回收空间。

sql-server locking sql-server-2016

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

如何删除内存优化表?

运行 SQL Server Standard 2016 SP2-CU1。我不太关心内存文件组,但我必须能够删除表对象?或者可能重命名它们?

跑步:

DROP TABLE [REF].[Work_xxyyzz]
Run Code Online (Sandbox Code Playgroud)

给出:

消息 12332,级别 16,状态 111,第 1 行
内存优化表不支持 DDL 语句 CREATE、ALTER 和 DROP 上的数据库和服务器触发器。

我的内存表上没有用户触发器或事件。5 个带主键的简单表。

这些表没有依赖关系或引用。它们就像临时表,我们将它们命名为Work_xxxyyzz表。但是,它们确实属于数据库模式。

我可以暂时保留文件组。我想删除这些表以创建同名的默认对象。

sql-server memory-optimized-tables drop-table sql-server-2016

4
推荐指数
2
解决办法
4825
查看次数

在虚拟机上应用 sql server 累积更新或服务包时 - 停止 VMWaretools 的安全方法是什么?

在对 sql server 2016 SP1 应用累积更新时,需要停止大量服务和应用程序才能继续进行更新。

其中包括虚拟机的核心,即 VMware Tools 核心服务。

停止此应用程序的所有实例以继续更新是否安全?

什么是安全的方法?

在此处输入图片说明

在此处输入图片说明

sql-server virtualisation windows-server sql-server-2016 patching

4
推荐指数
2
解决办法
3577
查看次数

由于此查询中定义的提示,查询处理器无法生成查询计划

有一个类似的问题,但不一样:

查询处理器无法生成查询计划

我有以下查询和以下过滤索引,但我看不出该查询无法使用下面描述的过滤索引的任何原因:

- 查询 - 使用max列或仅使用列都没有关系,它不喜欢索引提示

SELECT -- MAX(AC1.changeDate)   
          AC1.changeDate
          FROM [dbo].[applicationStateChange]  AS ac1  WITH(INDEX(FI_ASC_ChangeDate))  
          WHERE ac1.applicationID = 130002
          AND AC1.newStatus = 'PLC'  
Run Code Online (Sandbox Code Playgroud)

-- 这是我的过滤索引 - 这个索引只是为了优化上面的查询

CREATE NONCLUSTERED INDEX FI_ASC_ChangeDate  
ON [dbo].[applicationStateChange] (   applicationID DESC)  
INCLUDE ( [changeDate] )
WHERE newStatus = 'PLC'  
WITH (  PAD_INDEX = OFF, FILLFACTOR = 100  , SORT_IN_TEMPDB = OFF , IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF, ONLINE = On, 
DROP_EXISTING = ON, 
DATA_COMPRESSION=PAGE, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON ) …
Run Code Online (Sandbox Code Playgroud)

index optimization execution-plan filtered-index sql-server-2016

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

SQL Server 可以在 SSMS 上禁用 IntelliSense 吗?

我正在使用 SSMS 2016(版本:13.0.15000.23)并连接到 SQL Server 数据库 2016(版本:13.0.5081.1)。

IntelliSense 不适用于我的 SSMS。

我尝试了以下方法:

  • 工具 >> 选项 >> 文本编辑器 >> Transact-SQL >> IntelliSense,然后选择启用 IntelliSense
  • 工具>>选项>>文本编辑器>>Transact-SQL>>常规,并验证自动列表成员和参数信息复选框被选中
  • 查询 >> IntelliSense 已启用
  • 验证 SQLCMD 是否已禁用
  • 刷新的 IntelliSense 缓存 (Ctrl+Shift+R)
  • 确保查询中没有编译错误
  • 卸载并重新安装 SSMS

我询问了我团队中的其他成员,如果确实如此,IntelliSense 只能偶尔为他们工作。

问题:
是否有在 SSMS 上禁用 IntelliSense 的服务器设置?


我已经完成了所有这些问题:

我对该实例的权限有限,但我可以选择和更新我正在使用的数据库中的记录(我没有尝试插入)。通过运行,我可以看到大约 1,600 个对象和列的名称:

SELECT …
Run Code Online (Sandbox Code Playgroud)

sql-server ssms intellisense sql-server-2016

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

内存优化表内存分配问题

我在 SQL Server 中有一些内存中 OLTP 对象,它的版本是 SQL Server 2016 SP2-CU4。由于某些表的数据行大小大于 8060 字节,我遇到了问题,因此内部 xtp DMV 中有一些行外存储,这些表分配了大约 120GB 的内存。

我改变这些表并将行大小减少到小于 8060 字节,分配给这些表的内存减少,分配给 object_id=0 的内存在 sys.dm_db_xtp_table_memory_stats 中增长,大约 50GB。我认为垃圾收集器线程无法找到这个孤立对象,因此它无法释放内存。

另一个问题是“分配给内存优化对象的内存”为 25GB,其中“内存优化对象使用的内存”为 62GB,可能我认为这是一个错误

我怎么能释放这个内存?!

在此处输入图片说明

在此处输入图片说明

sql-server sql-server-2016

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