小编Han*_*non的帖子

针对实时 SQL Server 数据库运行的 Avamar SQL Agent

我们使用一家大公司作为我们的服务提供商。

那家服务公司的技术人员正在非常努力地安装一种叫做 的东西Avamar SQL Agent,据称它将用于替换我旧的可靠的完整、差异和事务日志备份。有人告诉我,它会不断监视 mdf、ndf 和 ldf 文件的任何更改,然后将更改的项目(页面、???)写入某处 (???)。

一旦新技术得到证实,我就完全支持新技术,但我对这种方法持怀疑态度,即我将不再需要采用 SQL Server 本地压缩备份(同样是完整、差异和 tlog)。

到目前为止,我已经采取的立场是,除非并且直到他们能够通过测试向我证明它不会弄乱我的 mdf、ndf 和 ldf 文件并且仍然可以恢复,否则我不会祝福这次冒险。在这里,我不知道什么或谁会做恢复本身……它是 SQL Server 恢复的某种派生,一些 Avamar 恢复,某种组合等。

有没有人对这个产品有任何经验?

sql-server backup transaction-log

5
推荐指数
1
解决办法
4156
查看次数

将生成的系列与选择中的每一行结合起来

下面的选择返回我所有用户拥有的所有项目的数组。

WITH user_projects AS
(SELECT
  u.id as user_id
  ,COALESCE(array_agg(DISTINCT pa.project_id), '{0}'::integer[]) as project_ids
FROM users u
LEFT JOIN project_assignments pa on pa.user_creator_id = u.id
GROUP BY u.id
)

user: 1, project_ids: {1, 2}
user: 2, project_ids: {3, 4}
Run Code Online (Sandbox Code Playgroud)

使用该选择,我想进行报告,该报告将为每个用户显示 12 个月的摘要。

SELECT
  to_char(pk.created_at,'Mon') as mon
 ,extract(year from pk.created_at) as yyyy
 ,up.user_id
 ,COALESCE(count(distinct pk.keyword_id), 0) as total_keywords
FROM user_projects up
LEFT JOIN project_keywords pk on pk.project_id = ANY(up.project_ids::int[])
GROUP BY up.user_id, up.project_ids, 1, 2
Run Code Online (Sandbox Code Playgroud)

输出:

 mon: sept, yyyy: 2014, user_id: 1, …
Run Code Online (Sandbox Code Playgroud)

postgresql join

5
推荐指数
1
解决办法
7284
查看次数

任何作业完成时执行 SP

我在服务器上有很多 SQL Server 作业。每当完成任何作业执行时,我都需要执行 SP。一种困难的方法是在每个调用该 SP 的作业上创建一个步骤。

有没有简单的方法可以做到这一点?作业完成后,SQL Server 是否执行任何 SP 或任何内容?

sql-server sql-server-2012 sql-server-agent

5
推荐指数
1
解决办法
1121
查看次数

从 SQL Server 2012 迁移到 SQL Server 2014 时 SQL Server 性能变慢

我们正在尝试在 Windows 2012 R2 操作系统上从 SQL Server 2012 迁移到 SQL Server 2014。

升级后,我们正在进行性能测试,并观察到仅从一个表(根本没有连接)运行简单查询的巨大差异。

该查询在 SQL Server 2012 中执行时间为 4 秒,但在 SQL Server 2014 中执行时间超过 1 分钟。

SQL Server 安装在 2 个不同的 VM(不同的 IP 地址)上。他们在每台机器上只有一个 SQL Server 实例。

两台机器之间的处理器/内存/硬盘空间相同。

这些机器安装了相同的应用程序。我们直接从 SQL Server Management Studio 运行相同的选择查询。

performance sql-server upgrade sql-server-2012 sql-server-2014

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

SQL Server 2014 LocalDB 中的 SQLCMD.EXE 在哪里或如何安装?

在安装了 SQL Server LocalDB 2014 的机器上,我正在寻找 SQLCMD.EXE 文件,但在任何地方都找不到它。有没有办法单独安装?

不幸的是,我不是机器的本地管理员,所以我不喜欢 MSI ...

找到此链接https://www.microsoft.com/en-us/download/confirmation.aspx?id=36433,但不能使用 MSI ... 也许复制可执行文件和 dll 可以解决问题。

C:\Program Files\Microsoft SQL Server\110\Tools\Binn 从安装了 SSMS 的另一台计算机复制文件 SQLCMD.EXE、BATCHPARSER.DLL 和 SQLCMD.RLL 后,我仍然收到错误:

Microsoft SQL Server Native Client 11.0:未找到数据源名称且未指定默认驱动程序。

运行sqlcmd -S np:\\.\pipe\LOCALDB#F8040C8F\tsql\query

sql-server sqlcmd sql-server-localdb

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

安装旧版本 SQL Server 的实例

在安装较新版本后安装以前版本的 SQL Server 实例时,是否有任何需要注意的问题?例如,将 2008 安装到具有现有 2012 实例的服务器上?

我找不到特定于这种情况的陈述,但这似乎有风险。

sql-server instance installation

5
推荐指数
1
解决办法
2759
查看次数

如何避免在“匹配时更新”子句中重复相同的条件?

我想将一张表合并到另一张表中。我需要在我的 WHEN MATCHED 子句中应用条件逻辑,理想情况下这样做:

MERGE INTO ATable AS a
USING BTable AS b
ON a.ID = b.ID
WHEN NOT MATCHED THEN
-- Do insert
WHEN MATCHED AND b.NeedsAdjustment = 1 THEN
UPDATE SET
    Col1 = b.Col1 + b.Adjustment
    ,Col2 = b.Col2 + b.Adjustment
    ,Col3 = b.Col3 + b.Adjustment
WHEN MATCHED THEN -- Default case (b.NeedsAdjustment <> 1)
UPDATE SET
    Col1 = b.Col1
    ,Col2 = b.Col2
    ,Col3 = b.Col3
Run Code Online (Sandbox Code Playgroud)

这不是有效的 SQL。根据 MSDN 文档:

如果有两个 WHEN MATCHED 子句,则一个必须指定 UPDATE 操作,一个必须指定 DELETE 操作。 …

sql-server update merge

5
推荐指数
2
解决办法
1735
查看次数

手动创建索引碎片

有没有人有一个很好的方法来手动为索引创建特定的碎片,理想情况下不增加基础表中的行数?我需要这个来进行索引重建基准测试。为了测量相同表/索引的特定碎片率所需的时间,我必须重新创建我想尝试的特定碎片级别。

通过或多或少的随机表更新来创建这种碎片是非常耗时且困难的。有任何想法吗?

更新:这是我的测试表。它实际上有大约 540K 行,

USE [Test]
GO

/****** Object:  Table [dbo].[tFrag2]    Script Date: 12/22/2015 15:33:51 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[tFrag2](
    [a] [int] NULL,
    [b] [varchar](1000) COLLATE Latin1_General_CI_AS NULL,
    [c] [varchar](1000) COLLATE Latin1_General_CI_AS NULL,
    [d] [decimal](18, 0) NULL,
    [e] [int] NULL,
    [uid] [uniqueidentifier] NOT NULL,
    [dt1] [datetime] NULL,
    [dt2] [datetime] NULL,
    [dt3] [datetime] NULL,
    [dt4] [datetime] NULL,
    [dt5] [datetime] NULL,
    [dt6] [datetime] NULL,
    [dt7] [datetime] NULL,
    [dt8] [datetime] NULL, …
Run Code Online (Sandbox Code Playgroud)

index sql-server sql-server-2008-r2 fragmentation

5
推荐指数
1
解决办法
2549
查看次数

sys.partitions 行计数严重错误 - 如何纠正?

查询 sys.partitions 可以返回表的近似行数。

我注意到,无论实际内容如何(即使是空分区),这都会为所有分区返回相同的行数。

该表具有聚集列存储索引,并且几乎所有列上都创建了统计信息。每次数据加载后,每天都会更新统计信息。该表按日期分区。

sys.partitions 查询:

    SELECT   convert(date, convert(varchar,rv.[value])) as partitionDate, p.rows as syspartitions_RowCount
        FROM       sys.tables t     
        join       sys.schemas  sc on sc.schema_id = t.schema_id        
        JOIN        sys.partitions p                ON      p.[object_id]         = t.[object_id]
        JOIN        sys.indexes i                   ON      i.[object_id]         = p.[object_id]
                                                    AND     i.[index_id]          = p.[index_id]
        JOIN        sys.data_spaces ds              ON      ds.[data_space_id]    = i.[data_space_id]
        LEFT JOIN   sys.partition_schemes ps        ON      ps.[data_space_id]    = ds.[data_space_id]
        LEFT JOIN   sys.partition_functions pf      ON      pf.[function_id]      = ps.[function_id]
        LEFT JOIN   sys.partition_range_values rv   ON      rv.[function_id]      = pf.[function_id]
                                                    AND     rv.[boundary_id]+1      = p.[partition_number]
        WHERE   p.[index_id] …
Run Code Online (Sandbox Code Playgroud)

sql-server partitioning azure-sql-data-warehouse

5
推荐指数
1
解决办法
5788
查看次数

避免循环/多个更新路径的首选设计

考虑以下设计:

CREATE TABLE dbo.Farmers
(
    FarmerName varchar(10) NOT NULL
        PRIMARY KEY 
);

CREATE TABLE dbo.FarmEquipment
(
    FarmEquipmentName varchar(10) NOT NULL
        PRIMARY KEY 
    , CreatorFarmer varchar(10) NOT NULL
        FOREIGN KEY REFERENCES dbo.Farmers(FarmerName)
        ON UPDATE CASCADE
        ON DELETE CASCADE
);

CREATE TABLE dbo.Fields
(
    FieldName varchar(10) NOT NULL
    , OwnerFarmer varchar(10) NOT NULL
        FOREIGN KEY REFERENCES dbo.Farmers(FarmerName)
        ON UPDATE CASCADE
        ON DELETE CASCADE
    , FarmEquipment varchar(10) NOT NULL
        FOREIGN KEY REFERENCES dbo.FarmEquipment(FarmEquipmentName)
        ON UPDATE CASCADE
        ON DELETE CASCADE
);
Run Code Online (Sandbox Code Playgroud)

用例:

  • 农民乔拥有土地。
  • 农民泰德拥有土地。 …

database-design sql-server referential-integrity

5
推荐指数
1
解决办法
1497
查看次数