AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-3734

Onion-Knight's questions

Martin Hope
Onion-Knight
Asked: 2013-12-11 06:40:41 +0800 CST

身份列如何复制?

  • 2

在事务复制期间,我们有数据从服务器 A 传输到服务器 B。

假设我们要在服务器 A 上的表上重新设置标识列(无论出于何种原因),这将如何影响服务器 B 上的数据?

我的直觉会说服务器 A 上的数据将使用新播种的身份,并将按原样发送到服务器 B(并且服务器 B 将具有使用新身份的内容),但我不确定这是否是正确的。

sql-server replication
  • 1 个回答
  • 3908 Views
Martin Hope
Onion-Knight
Asked: 2013-12-06 11:07:55 +0800 CST

复制后的标识列行为

  • 0

假设我们有两个服务器:服务器 A 和服务器 B。数据正在从 A 复制(普通事务复制)到 B。

对于其中一个表,我们有如下数据:

Server A   - Server B
=========    =========

ID|Content   ID|Content
----------   ----------
1 | ...      1 | ...
2 | ...      2 | ...
  ...         ...
98| ...      98| ...
99| ...      99| ...

一段时间后,我们删除旧数据:

Server A   - Server B
=========    =========

ID|Content   ID|Content
----------   ----------
50| ...      50| ...
51| ...      51| ...
  ...         ...
98| ...      98| ...
99| ...      99| ...

现在,我们改变了复制的顺序,所以现在服务器 B 正在复制到服务器 A。

问题是:

我本以为添加到服务器 B(然后复制到服务器 A)的新数据将继续使用 ID 列(它将转到 100、101、102,...)。相反,我注意到它从 1 开始。

问题是:

当 ID 最终达到 50 时,数据库将如何处理?数据库会开始抛出主键违规,还是会意识到发生了什么,并从 ID 49 跳到 ID 100?

如果它开始抛出主键违规,是否有一个命令可以用来告诉服务器 B 它应该从 ID 100 开始?如果是这样,这个命令可以在复制数据时完成吗?

sql-server t-sql
  • 1 个回答
  • 837 Views
Martin Hope
Onion-Knight
Asked: 2012-10-10 10:20:02 +0800 CST

保存 DBCC 收缩文件的结果

  • 3

当我们执行以下命令时:

DBCC SHRINKFILE('MyDB_log', 1)

我们在 SSMS 中得到以下结果:

DBID | Field | CurrentSize | MinimumSize | UsedPages | Estimated Pages
-----|-------|-------------|-------------|-----------|----------------
 11  |   2   |    128      |   128       |  128      |     128

问题:

我们如何在不使用 SSMS 输出窗口的情况下创建将这些结果输出到文本文件的查询。

我试过这个:

CREATE TABLE #x
(
    [DBID] int,
    FileID int,
    CurrentSize int,
    MinimumSize int,
    UsedPages int,
    EstimatedPages int
)
INSERT #x 
  EXEC('DBCC SHRINKFILE(''MyDB_log'', 1)')

SELECT * 
  FROM #x

DROP TABLE #x

但我收到以下错误:

Msg 8920, Level 16, State 2, Line 1
Cannot perform a shrinkfile operation inside a user transaction. Terminate the transaction and reissue the statement.

我还尝试了以下方法:

DECLARE @Statement AS VARCHAR(2000); 
SET @Statement = 'bcp "DBCC SHRINKFILE(''MyDB_log'', 1)" queryout C:\Test.txt -c -UDBAdmin -P1234 -S192.168.123.123';

exec xp_cmdshell @Statement

我得到:

Error = [Microsoft][SQL Native Client]BCP host-files must contain at least one column
sql-server-2005 dbcc
  • 3 个回答
  • 1231 Views
Martin Hope
Onion-Knight
Asked: 2012-10-05 13:59:03 +0800 CST

我们可以在进行事务日志备份后执行“最新恢复”吗?

  • 4

设置:

假设我们有一个处于完全恢复模式的数据库,每晚执行数据库备份、事务日志备份和事务日志收缩。

现在 Transaction Log 在一天中增长如此之快,所以我们需要每 6 小时执行一次 Transaction Log Backup + Transaction Log Shrink 以保持其较小。

问题:

鉴于这些事件的顺序(特别是每六个小时的事务日志备份/收缩),我们是否仍然能够执行“最新”恢复?(即使用上次的DB Backup + Transaction Log获取最新的数据)。

sql-server t-sql
  • 1 个回答
  • 618 Views
Martin Hope
Onion-Knight
Asked: 2012-07-31 07:58:28 +0800 CST

基于值的唯一约束/索引

  • 6

我有一个包含以下列定义的表:

ID (INT, PK)
Name (VarChar)
Active (Bit)
Bunch_of (Other_columns)

问题:我想要一个约束,Name/Active这样我们只能有 1 条给定Name为Active( Active= 1) 的记录,但我们可以有许多相同Name的记录Inactive( Active= 0)。这可能吗?

我已经尝试过正常的 Unique 约束,但它们将数据集限制为仅允许 1 条记录,且给定Name为Inactive.

sql-server sql-server-2005
  • 2 个回答
  • 180 Views
Martin Hope
Onion-Knight
Asked: 2012-06-13 07:16:52 +0800 CST

何时更新统计数据?

  • 47

我继承了执行以下操作的维护计划:

  • 清理旧数据
  • 检查数据库完整性
  • 执行数据库和事务日志备份
  • 重组我们的索引
  • 更新统计
  • 删除旧的备份和维护计划文件

在 23 分钟的维护计划中,更新统计数据需要惊人的 13 分钟。在这 13 分钟期间,对数据库的访问被阻止(或者至少,从这个数据库到我们其他数据库的复制被暂停)。

我的问题是:

我们什么时候应该更新统计数据,为什么?

这似乎是我们应该比每天少做的事情。我试图让我们摆脱“仅仅因为”做不必要的维护的心态。

sql-server performance
  • 2 个回答
  • 111318 Views
Martin Hope
Onion-Knight
Asked: 2012-06-12 08:00:11 +0800 CST

参数嗅探:为什么这会成为一个问题?

  • 7

今天,我遇到了一个存储过程在从 ASP.NET 网页运行时超时(耗时超过 30 秒)的问题,但在从 SSMS 运行时却快速执行(耗时 5 秒)。

在怀疑参数嗅探是罪魁祸首之后,我屏蔽了输入参数,查询执行得更快。

我的问题是:为什么会这样?

这个系统已经投入生产超过 5 年,这是我们第一次在我们的存储过程中看到这样的东西。这是“数据库磨损”吗?

我们已经解决了这个问题,所以这没什么大不了的,但我只是好奇为什么会这样。

sql-server stored-procedures
  • 2 个回答
  • 1495 Views
Martin Hope
Onion-Knight
Asked: 2012-04-13 06:50:56 +0800 CST

复制停滞了吗?

  • 4

发生了什么:

我在 16 小时前重新初始化了订阅。我有大约 120 万条记录要传输,所以我预计这需要一段时间。Replication Monitor 说“ N 个事务和 N 个命令已交付”数小时,所以我认为一切正常。

问题:

今天早上,当我检查复制监视器时,我看到了: 快照尚不可用

哦不!我惊呼道,我想我需要用更新的快照重新初始化复制以避免拉出 120 万行。但是我查看了复制监视器上的另一个选项卡,我看到了这个:

交易已交付

问题:

我想知道为什么要交付事务,尽管复制监视器抱怨快照。

sql-server-2005 replication
  • 1 个回答
  • 129 Views
Martin Hope
Onion-Knight
Asked: 2012-04-11 06:40:58 +0800 CST

重新初始化订阅性能

  • 3

我有 4 个服务器,服务器 A、B、C、D。

服务器 A 发布一个复制实例,服务器 B、C、D 对其进行请求订阅。

服务器 B 的订阅需要重新初始化,但我担心重新初始化它(使用“当前快照”,而不是生成新快照)会影响到其他服务器的复制性能。

我应该担心,还是因为服务器 B、C 和 D 有拉(而不是推)订阅,我是不是想多了?

sql-server-2005 performance
  • 2 个回答
  • 575 Views
Martin Hope
Onion-Knight
Asked: 2012-03-30 11:04:17 +0800 CST

在维护计划期间记录自定义 SQL 结果

  • 2

我希望我的维护计划的最后一步是执行一个简单的自定义 SQL 脚本 ( SELECT * FROM <SomeTable> WHERE <Condition>),并将结果保存到一个文件(文本、CSV 等)中。

这可能吗?我发现最接近的是在.batWindows 执行的文件中执行此操作,但这似乎有点麻烦。

sql-server-2005 windows
  • 1 个回答
  • 81 Views
Martin Hope
Onion-Knight
Asked: 2012-03-29 11:13:18 +0800 CST

维护计划时间过长 - 锁定表 - 归咎于索引

  • 2

系统:

我有一个为多个表(10 个表,总共 5000 万条记录)重建索引的维护计划。

问题:

在索引重建期间(约 20 分钟),我们无法将数据插入数据库

问题:

如何减少维护计划期间的停机时间?我正在考虑确保事务日志大小较小(每天截断 4 次),但我认为这不会有帮助。

我也不确定更频繁地重建索引是否会有帮助。(因为我不知道这是否是将受益于最近重新索引表的“批量”操作)。

注意:升级到 SQL Server 2005 Enterprise 以获得实时重新索引功能不是一个选项。

sql-server-2005 performance
  • 1 个回答
  • 1056 Views
Martin Hope
Onion-Knight
Asked: 2012-02-29 07:50:27 +0800 CST

如果复制失败启动 Windows 服务

  • 0

设置:

  • 我们的所有服务器上都有 SQL Server Management Studio 2005 SP3。
  • 我们有 1 个主服务器和 1 个从主服务器复制数据库的辅助服务器。(如果重要的话,这是一个“拉”复制而不是“推”复制)

问题: 在复制失败的情况下,是否可以使用 SSMS 2005 中的警报工具在辅助服务器上启动 Windows 服务?

如果没有,此功能是否在较新版本的 SSMS 中可用?

sql-server-2005 replication
  • 1 个回答
  • 58 Views
Martin Hope
Onion-Knight
Asked: 2012-01-24 09:08:33 +0800 CST

SQL Server 2005/2008 Standard 中的联机重新索引

  • 3

故事:每周一次,我们运行一个特殊的维护计划,涉及重新索引 2 个关键表,这两个表之间有大约 600 万条记录。我们使用 SQL Server 2005 标准版。

问题:在此重新索引(约 15 分钟操作)期间,我们未能将数据插入表中,并且我们的客户没有数据。

有人告诉我,SQL Server 2008 Enterprise 有一个“联机重新索引”,它在较低版本的 SQL Server 中不存在,可以解决我们的问题。

但是,我刚刚在维护计划选项(SQL 2005 标准)中找到了以下选项:

SQL 2005 联机重新索引

我的问题:这是否执行与 2008 Enterprise 相同的“在线重新索引”?启用此选项有什么影响(性能方面)?我是不是差点被诱骗购买 2008 Enterprise 许可证?

sql-server-2008 sql-server-2005
  • 1 个回答
  • 643 Views
Martin Hope
Onion-Knight
Asked: 2011-10-05 10:53:27 +0800 CST

行级和页级锁定的区别和后果

  • 13

尝试运行维护计划时,我收到以下错误:

执行查询“”失败,出现以下错误:“无法重新组织表“”上的索引“”(分区 1),因为禁用了页级锁定。”

我们目前在此索引上启用了行级别锁定。我可以启用页面级别锁定,但我不确定会产生什么影响。

我的问题是:这两种锁定方案有什么区别,它们在现实世界(生产中)的后果是什么?

sql-server maintenance
  • 2 个回答
  • 21725 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve