标签: sql-server

活动监视器显示 WAITFOR RECEIVE 的持续时间很长

在活动监视器中,以下查询导致高 CPU 和 281 毫秒的平均持续时间。

WAITFOR (
RECEIVE conversation_handle
    , service_contract_name
    , message_type_name
    , message_body 
FROM ExternalMailQueue 
INTO @msgs
)
, TIMEOUT @rec_timeout
Run Code Online (Sandbox Code Playgroud)

任何想法或步骤如何解决这个问题?

sql-server service-broker

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

检查何时将行插入到 SQL Server 上的表中?

是否可以检查何时将特定行插入到 SQL Server 中的特定表中?如果这有帮助,该表有一个索引。

我需要为已经插入行的现有表执行此操作。

谢谢。

sql-server

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

可用性组可以取代事务复制吗?

我一直在研究 SQL Server 2012 的新功能,以及它如何帮助我目前的情况。

目前,我们使用 SQL Server 2008 R2,并通过事务复制将两个 OLTP 服务器的数据库复制到单个报告服务器。然后我们使用这些复制的 DB 进行报告。

我对 SQL Server 2012 和可用性组是否可以取代它感兴趣 - 所以我会使用新的可用性组而不是事务复制,并将两个 OLTP 服务器的数据库镜像到报告服务器 - 报告将能够访问只读副本。

我不确定这是否会奏效,甚至根本不会。

我想摆脱复制,因为它会导致我的部署策略出现问题(使用 VSDBCMD.exe)。我还想避免大型数据库上的复制重新初始化延迟。

有没有人有任何好的例子或经验?是否可以按照较低版本中的正常镜像将多个服务器的可读副本镜像到单个服务器?

这最初是在这里问的:https : //stackoverflow.com/questions/10415225/mirroring-and-availability-groups-in-sql2012对不起,我认为我还不能迁移问题。

replication sql-server sql-server-2012 high-availability availability-groups

8
推荐指数
2
解决办法
2152
查看次数

将文本列中的 RTF 批量转换为纯文本

我有一个旧系统,表中有大约 1000 万行。在该表中有一个 type 列text,其中大部分是标准文本,但大约 50 万行中有 RTF 标记。我需要将 RTF 格式的文本转换为纯文本。

我当前的方法是我有一个 C# 程序,它使用 a 将查询加载到 DataTable 中,SqlDataAdapter并使用 winformsRichTextBox控件进行转换。

void bw_DoWork(object sender, DoWorkEventArgs e)
{
    count = 0;

    rtbRTFToPlain = new RichTextBox();

    using (SqlDataAdapter ada = new SqlDataAdapter("select note_guid, notes from client_notes", Globals.SQLConnectionString))
    using(SqlCommandBuilder cmb = new SqlCommandBuilder(ada))
    {
        DataTable dt = new DataTable();
        ada.UpdateCommand = cmb.GetUpdateCommand();

        ada.Fill(dt);

        int reportEvery = dt.Rows.Count / 100;
        if (reportEvery == 0)
            reportEvery = 1;
        foreach (DataRow row …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 sql-server c#

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

如何在关系数据库中存储许多小的时间序列?

输入数据

多个测试床生成各种复杂性的测量数据。

在最基本的形式中,不考虑任何元数据,测试台上的一次测量将是一个小的(1 - 几千个样本)时间序列,每个样本有几十个通道/信号/属性。

跨时间和测试台的测量将具有一组相似的信号,但并不总是与为测试设置添加和移除传感器相同。

数据量

目前我们估计我们的数据速率为 6 testbeds x 4 test per hour x 12 hours a day x 4000 samples per test == 1,152,000 samples per day x 365 == 420,480,000 samples per year

_ x 48 columns per sample (currently 32 bit floats, mostly) ~~~ 75 GB per year

(本例中的列指的是通道/信号)

如果/当添加更多测试平台时,数据量可能会相应增加。

数据输入

测试台在本地生成数据,然后将数据异步导入数据库。(可能在一秒钟内生成几千个样本,然后在本地进行审查,然后进行刮擦或导入。)

查询

我们希望查询主要针对单个测量的聚合。即,您希望找到所有测量值(每个测量值都有 4k 个样本),例如 channel_output_voltage 的平均值在某个范围内。

数据库布局?

为此设置表格的好方法是什么?必须考虑哪些因素?

从理论上讲,每次测量我可以使用一张桌子,每年生成 100,000 张桌子,但这对我来说并不是一个好主意。

或者我可以将所有内容都放在一个大表中(有数百列),该表为所有通道留出空间,并根据需要添加通道:每个样本一行。未使用的通道保持 NULL。

MEASUREMENTS
------------
measurement_id } PK
time_stamp     }
channel_1 (may be …
Run Code Online (Sandbox Code Playgroud)

schema oracle database-design sql-server scalability

8
推荐指数
1
解决办法
2662
查看次数

使用 SET 或 SELECT 填充变量更好吗?

将值设置为变量的更好方法是什么(关于性能)?

  1. 通过SET命令:

    DECLARE @VarString nvarchar(max);
    SET @VarString = 'john doe';
    SELECT @VarString;
    
    Run Code Online (Sandbox Code Playgroud)
  2. 通过SELECT命令:

    DECLARE @VarString nvarchar(max);
    SELECT @VarString = 'john doe';
    SELECT @VarString;
    
    Run Code Online (Sandbox Code Playgroud)

performance sql-server-2008 sql-server query-performance

8
推荐指数
1
解决办法
2521
查看次数

按分钟和两分钟间隔分组

我有一个日期时间列,我可以轻松地在我的日期时间列上使用 group by 运行查询。但是,我想运行组查询

  • 1 分钟间隔
  • 2 分钟间隔
  • 5 分钟间隔
  • 1 小时间隔
  • 等等。

我该怎么做呢?

sql-server-2008 sql-server

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

为什么 SQL Browser 服务被禁用?

我有一个安装我们产品的软件安装包(使用 InstallShield/InstallScript 编写)的间歇性问题。在安装过程中,我们重新启动 SQL Browser 服务。大多数时候这工作正常。但偶尔 - 我还没有想出如何以可预见的方式重现这一点 - 服务无法重新启动,我在“服务”管理器中发现服务状态设置为“已禁用”。

任何想法会导致服务被禁用,以及如何防止它发生?

sql-server-2008 sql-server sql-server-2008-r2

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

SQL Server 日志收缩问题

可能的重复:
为什么事务日志不断增长或空间不足?

我的 SQL Server 中有一个 300 GB 的数据库日志。我想缩小所有日志,但它不允许我这样做。我尝试在 SQL Server 2008 R2 中使用查询和 UI。我用了

USE UserDB;
GO
DBCC SHRINKFILE (DataFile1, 7);
GO
Run Code Online (Sandbox Code Playgroud)

但是没有任何错误,数据库日志不会缩小。

然后我想使用另一种方法,如下所示:

我将从 SQL Server 分离数据库,然后在将特定.LDF文件移动到其他位置后,仅将数据库文件附加回 SQL Server。我能够成功地将所有日志从 SQL Server 移动到其他服务器。

请让我知道这是将事务日志移动到其他驱动器的好习惯。如果没有,请建议一些其他解决方案来从收缩的数据库日志中恢复。

sql-server-2008 sql-server

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

修复孤儿用户“访客”?

当特殊guest用户被孤立(未链接到任何登录)时,可以做什么(如果有的话)?

对于我的一个数据库 (SQL Server 2005),执行以下命令将来宾用户列为孤立用户。

exec sp_change_users_login 'report'
Run Code Online (Sandbox Code Playgroud)

结果:

UserName    UserSID
guest       0x3C2E66759FFBC14F84127D6795C27FD3
Run Code Online (Sandbox Code Playgroud)

如果我尝试使用该过程修复来宾用户,则会得到以下信息:

exec sp_change_users_login 'update_one', 'guest', 'guest'
Run Code Online (Sandbox Code Playgroud)

终止此程序。'guest' 是此过程中登录名参数的禁止值。

如果我尝试删除用户,我会得到:

用户 'guest' 不能删除,只能禁用。

select * from sys.database_principals where name = 'guest'
Run Code Online (Sandbox Code Playgroud)

结果是:

name                 guest
principal_id         2
type                 S
type_desc            SQL_USER
default_schema_name  guest
create_date          11/13/98 2:58 AM
modify_date          10/16/01 4:31 PM
owning_principal_id  NULL
sid                  0x3C2E66759FFBC14F84127D6795C27FD3
is_fixed_role        0
Run Code Online (Sandbox Code Playgroud)

数据库似乎对这是否是特殊用户感到困惑。有什么可以做的吗?

sql-server-2005 sql-server

8
推荐指数
1
解决办法
1716
查看次数