小编Kin*_*hah的帖子

UAT 和 PROD 服务器上执行计划的差异

我想了解为什么在 UAT(3 秒内运行)与 PROD(23 秒内运行)上执行相同查询时会有如此巨大的差异。

UAT 和 PROD 都拥有准确的数据和索引。

询问:

set statistics io on;
set statistics time on;

SELECT CONF_NO,
       'DE',
       'Duplicate Email Address ''' + RTRIM(EMAIL_ADDRESS) + ''' in Maintenance',
       CONF_TARGET_NO
FROM   CONF_TARGET ct
WHERE  CONF_NO = 161
       AND LEFT(INTERNET_USER_ID, 6) != 'ICONF-'
       AND ( ( REGISTRATION_TYPE = 'I'
               AND (SELECT COUNT(1)
                    FROM   PORTFOLIO
                    WHERE  EMAIL_ADDRESS = ct.EMAIL_ADDRESS
                           AND DEACTIVATED_YN = 'N') > 1 )
              OR ( REGISTRATION_TYPE = 'K'
                   AND (SELECT COUNT(1)
                        FROM   CAPITAL_MARKET
                        WHERE  EMAIL_ADDRESS = ct.EMAIL_ADDRESS …
Run Code Online (Sandbox Code Playgroud)

performance sql-server-2008-r2 query-performance

41
推荐指数
3
解决办法
8866
查看次数

如何使用进程 ID、进程名称、登录时间、用户、开始时间和持续时间查找长时间运行的查询?

任何人都可以帮我找到下面给出的长时间运行查询的详细信息。ProcessID、进程名称、数据库、主机、用户、进程登录时间、查询开始时间和查询持续时间。

我正在寻找提供此数据的查询或 SP。

sql-server

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

设计数据库和表以保留更改记录的最佳方法?

我需要在项目上设置历史功能以跟踪先前的更改。

假设我现在有两个表:

NOTES TABLE (id, userid, submissionid, message)

SUBMISSIONS TABLE (id, name, userid, filepath)

示例:我在笔记中有一行,用户想要更改消息。我想在更改之前和更改之后跟踪它的状态。

在这些表中的每一个中设置一列的最佳方法是什么,该列将说明某个项目是否“旧”。0 如果活动1 如果删除/不可见。

我还想创建一个历史 ( AUDIT TRAIL) 表,其中包含id先前状态的 ,id新状态的 ,这些 id 与哪个表相关?

mysql database-design audit

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

有没有一种很酷的方法可以在数百台机器上为 SQL Server 执行 CU 更新?

我的公司在一夜之间从 50 个 SQL Server 增长到 200 多个。帮助!

我的问题是:

  • 我怎样才能在这么多服务器上执行 CU 更新并且仍然有生命并保持理智?SCCM 似乎无法执行 CU 更新。

  • 有没有其他人能够在 100 台服务器上执行 CU 更新?

  • 还有哪些其他选择?

sql-server installation automation

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

将日期 yyyy-mm-dd 转换为整数 YYYYMM

我如何转换@dateb:

SET @dateb = dateadd(month, datediff(month, 0, getdate()) - 3, 0)
Run Code Online (Sandbox Code Playgroud)

2014-04-04作为日期返回到整数201404

谢谢

sql-server

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

Sql Anywhere 11:恢复增量备份失败

我们想在完整备份后创建远程增量备份。这将使我们能够在发生故障时进行恢复,并使用 SQL Anywhere 网络服务器启动另一台具有尽可能接近实时备份的机器。

我们正在做一个完整的备份如下:

dbbackup -y -c "eng=ServerName.DbName;uid=dba;pwd=sql;links=tcpip(host=ServerName)"
    c:\backuppath\full
Run Code Online (Sandbox Code Playgroud)

这会备份数据库和日志文件,并且可以按预期恢复。对于增量备份,如果有多个增量备份,我已经使用重命名方案尝试了实时和增量事务日志:

dbbackup -y -t -c "eng=ServerName.DbName;uid=dba;pwd=sql;links=tcpip(host=ServerName)"
    c:\backuppath\inc

dbbackup -y -l -c "eng=ServerName.DbName;uid=dba;pwd=sql;links=tcpip(host=ServerName)" 
    c:\backuppath\live
Run Code Online (Sandbox Code Playgroud)

但是,在将事务日志应用于还原时,将事务日志应用于数据库时总是收到错误消息:

10092:无法找到事务日志中引用的表的表定义

事务日志恢复命令是:

dbeng11 "c:\dbpath\dbname.db" -a "c:\backuppath\dbname.log"
Run Code Online (Sandbox Code Playgroud)

该错误没有指定它找不到哪个表,但这是一个受控测试,没有创建或删除任何表。我插入几行然后在尝试恢复之前启动增量备份。

有谁知道在 Sql Anywhere 11 上进行增量备份和还原的正确方法吗?

更新:考虑可能与目标数据库的复杂性有关,我做了一个新的空白数据库和网络服务。然后添加了一个包含两列的表格并插入了几行。进行完整备份,然后插入和删除更多行并提交事务,然后进行增量备份。在恢复完整备份后尝试应用事务日志的增量备份时,这也失败并出现相同的错误...

编辑:

您可以点击此链接查看相同的问题,并提供更多关于 SA 的反馈:http : //sqlanywhere-forum.sybase.com/questions/4760/restoring-incrementallive-backup-failure

backup restore sybase-sql-anywhere

16
推荐指数
1
解决办法
1594
查看次数

计算一行占总和的百分比

为糟糕的标题道歉,我不确定什么是好的标题。

这是当前(简化视图)我正在使用的数据

Agent    |  Commission     
---------|------------
Smith    |    100
Neo      |    200
Morpheus |    300
Run Code Online (Sandbox Code Playgroud)

我需要计算总佣金的百分比,每个代理负责。

因此,对于特工 Smith,百分比将计算为 (Agent Smith's commission / Sum(commission)*100

所以,我的预期数据是

Agent    |  Commission   |  % Commission    
---------|---------------|---------------
Smith    |    100        |     17
Neo      |    200        |     33
Morpheus |    300        |     50
Run Code Online (Sandbox Code Playgroud)

我有一个函数返回每个代理的佣金。我有另一个函数将百分比返回为(Commission/Sum(Commission))*100. 问题是Sum(commission)对每一行都进行计算,并且鉴于此查询将在数据仓库上运行,数据集会相当大(目前,只有不到 2000 条记录),老实说,这是一种糟糕的方法(IMO )。

有没有一种方法可以Sum(Commission)不为获取的每一行计算?

我在考虑两部分查询的内容,第一部分将获取sum(commission)到包变量/类型,第二部分将引用此预先计算的值,但我不确定如何完成此操作。

我只能使用 SQL,而且我在 Oracle 10g R2 上运行。

aggregate oracle-10g-r2

15
推荐指数
3
解决办法
10万
查看次数

帮助 PIVOT 查询

我有一个具有以下结构的表:

CREATE TABLE [dbo].[AUDIT_SCHEMA_VERSION](
    [SCHEMA_VER_MAJOR] [int] NOT NULL,
    [SCHEMA_VER_MINOR] [int] NOT NULL,
    [SCHEMA_VER_SUB] [int] NOT NULL,
    [SCHEMA_VER_DATE] [datetime] NOT NULL,
    [SCHEMA_VER_REMARK] [varchar](250) NULL
);
Run Code Online (Sandbox Code Playgroud)

一些示例数据(似乎 sqlfiddle 有问题.. 所以放一些示例数据):

INSERT INTO [AUDIT_SCHEMA_VERSION]([SCHEMA_VER_MAJOR],[SCHEMA_VER_MINOR],[SCHEMA_VER_SUB],[SCHEMA_VER_DATE],[SCHEMA_VER_REMARK])
VALUES(1,6,13,CAST('20130405 04:41:25.000' as DATETIME),'Stored procedure build')
INSERT INTO [AUDIT_SCHEMA_VERSION]([SCHEMA_VER_MAJOR],[SCHEMA_VER_MINOR],[SCHEMA_VER_SUB],[SCHEMA_VER_DATE],[SCHEMA_VER_REMARK])
VALUES(1,6,13,CAST('20130405 04:41:25.000' as DATETIME),'Stored procedure build')
INSERT INTO [AUDIT_SCHEMA_VERSION]([SCHEMA_VER_MAJOR],[SCHEMA_VER_MINOR],[SCHEMA_VER_SUB],[SCHEMA_VER_DATE],[SCHEMA_VER_REMARK])
VALUES(1,7,13,CAST('20130405 04:41:25.000' as DATETIME),'Stored procedure build')
INSERT INTO [AUDIT_SCHEMA_VERSION]([SCHEMA_VER_MAJOR],[SCHEMA_VER_MINOR],[SCHEMA_VER_SUB],[SCHEMA_VER_DATE],[SCHEMA_VER_REMARK])
VALUES(1,10,13,CAST('20130405 04:41:25.000' as DATETIME),'Stored procedure build')
INSERT INTO [AUDIT_SCHEMA_VERSION]([SCHEMA_VER_MAJOR],[SCHEMA_VER_MINOR],[SCHEMA_VER_SUB],[SCHEMA_VER_DATE],[SCHEMA_VER_REMARK])
VALUES(1,12,13,CAST('20130405 04:41:25.000' as DATETIME),'Stored procedure build')
INSERT INTO [AUDIT_SCHEMA_VERSION]([SCHEMA_VER_MAJOR],[SCHEMA_VER_MINOR],[SCHEMA_VER_SUB],[SCHEMA_VER_DATE],[SCHEMA_VER_REMARK])
VALUES(1,12,13,CAST('20130405 04:41:25.000' as DATETIME),'Stored …
Run Code Online (Sandbox Code Playgroud)

sql-server pivot t-sql sql-server-2008-r2

12
推荐指数
2
解决办法
764
查看次数

如何恢复 SQL Server 2008 R2 性能计数器?

我在 Windows 7 x64 上运行 SQL Server 2008 R2 Developer 作为默认实例。出于某种原因,SQL Server 的性能计数器似乎消失了。SELECT * FROM sys.dm_os_performance_counters返回零行。

我试过跑步lodctr /T:perf-MSSQLSERVERsqlctr.ini。尽管它完成没有错误,但它没有修复任何问题,即使在重新启动远程注册表服务之后也是如此。事实上,现在 perfmon 中缺少计数器。unlodctr MSSQLSERVER仍然说计数器没有安装,但lodctr /Q:MSSQLSERVER说它们存在并启用。常规的 Windows 和 .NET 计数器工作正常。

在 Windows 错误日志中,我看到错误 8317:

无法查询与注册表项“HKLM\SYSTEM\CurrentControlSet\Services\MSSQLSERVER\Performance”关联的值“First Counter”。SQL Server 性能计数器已禁用。

我怀疑该问题可能是由安装失败的 SQL 2012 RC0 触发的。除了重新安装 SQL Server 2008 R2 之外,对如何恢复有什么建议吗?

sql-server sql-server-2008-r2 perfmon

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

有没有办法找出谁更改了登录密码?

我试图找出谁更改了 SQL Server 2008 R2 中的登录密码。

我已经检查了默认跟踪 - 它没有记录该事件。默认跟踪将包括这些与安全相关的事件:

/*
    Audit Add DB user event
    Audit Add login to server role event
    Audit Add Member to DB role event
    Audit Add Role event
    Audit Add login event
    Audit Backup/Restore event
    Audit Change Database owner
    Audit DBCC event
    Audit Database Scope GDR event (Grant, Deny, Revoke)
    Audit Login Change Property event
    Audit Login Failed
    Audit Login GDR event
    Audit Schema Object GDR event
    Audit Schema Object Take Ownership
    Audit Server Starts …
Run Code Online (Sandbox Code Playgroud)

security permissions sql-server-2008-r2 logins

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