标签: sql-server

SQL Server 2012 中 AAG 的手动故障转移

只是一个关于手动故障转移的问题。如果我们使用 SSMS 执行故障转移与转到故障转移群集管理器并将角色移动到辅助节点,这是否重要?是否有首选方法或任何一种方法都可以?

sql-server clustering availability-groups

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

作业不是作为代理运行,而是作为引擎帐户运行

我最近创建了一个新的 SQL Server 环境,我正在尝试尽可能使用最佳实践,尤其是最低特权的方法。我们环境中的其他服务器只有使用域​​管理员权限和 SA 权限的组合运行的作业,这“简单”且可怕。

除此之外,我有使用域帐户运行的数据库引擎DOMAIN\sqlengine和使用DOMAIN\sqlagent.

我有一个简单的维护计划,可以将服务器上的所有数据库完整备份到远程 UNC 路径。我曾假设/计划代理帐户 ( DOMAIN\sqlagent) 将执行计划的作业。作业因操作系统驱动的拒绝访问错误而失败。所以我DOMAIN\sqlagent在目录中添加了帐户修改权限,以便它可以执行备份。令我惊讶的是它又失败了。当我检查目标服务器的安全日志时,我看到这DOMAIN\sqlengine是帐户身份验证。该帐户没有获得 UNC 路径的权限。为什么引擎帐户而不是代理帐户运行作业?

如果我查看我DOMAIN\sqlagent为该维护计划中的所有作业设置的作业所有者。在作业步骤下,它被设置为作为“SQL Server 代理服务帐户”运行。

我做错了什么或不理解?

sql-server permissions sql-server-2008-r2 jobs

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

由于数据库服务器移动,排序顺序已更改

我们使用的是 SQL Server 2012(Service Pack 3),最近我们从一台服务器转移到了另一台服务器。之后我们遇到了问题SQL排序顺序问题。我们有很多报告,其中 order by 子句不存在。移动后,排序顺序已更改,报告中的结果与实际结果不同。

我知道通过在所有存储过程和视图中放置 Order by 子句来解决这个问题。由于文件数量庞大,有什么办法可以在SQL配置中解决这个问题吗?

sql-server

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

查询以从仅包含开始日期的列表计算开始和结束日期

我有以下形式的数据需要合并,以便我从两行输入数据创建一行,其中第二列是下一行减去一天的值。

我一直在努力想出一种方法来做到这一点,但没有走得太远。我希望这张图能解释这个问题:

表结构

CREATE TABLE Process(
    ProcessOrder int NOT NULL IDENTITY (1, 1),
    ProcessDate date NOT NULL
);
Run Code Online (Sandbox Code Playgroud)

询问

SELECT ProcessOrder, ProcessDate From Process ORDER BY ProcessOrder;
Run Code Online (Sandbox Code Playgroud)

数据

ProcessOrder  ProcessDate
------------  -----------
208           2016-01-04
209           2016-01-11
210           2016-01-18
211           2016-01-25
212           2016-02-01
213           2016-02-08
Run Code Online (Sandbox Code Playgroud)

我需要将上述数据变成以下形状(注意,从后续记录来看,ProcessEnd 比 ProcessBegin 少一天):

ProcessOrder  ProcessBegin  ProcessEnd
------------  ------------  ----------
208           2016-01-04    2016-01-10
209           2016-01-11    2016-01-17
210           2016-01-18    2016-01-24
211           2016-01-25    2016-01-31
212           2016-02-01    2016-02-07
213           2016-02-08    *NULL*
Run Code Online (Sandbox Code Playgroud)

编辑

我保证 ProcessOrder 列中的值是连续的,没有缺失值。

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

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

SQL 服务器上未充分利用的 CPU

我最近升级了我的 SQL Server 2014 硬件。CPU 配置文件看起来很奇怪。我有 24 个 CPU,所有 CPU 在线可见,MAXDOP 为 0。SQL CPU 使用率达到 60% 的峰值并且不会超过这个值,尽管查询是高度 CPU 密集型的,并且大部分处于运行/可运行状态。我检查了会话日志转储,总请求时间仅略高于 CPU 时间,因此排除了 io 等待等。还检查了 OS CPU 使用率跟踪仅略高于 SQL CPU 使用率。想知道为什么 CPU 没有被充分利用。以前的硬件有 16 个 CPU 并且过去饱和度约为 95%

sql-server

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

当我的 RAM 仅为 512 GB 时,SQL Server 2000 TB 的最大内存

当我的机器 RAM 仅为 512 GB 时,为 SQL Server 2012 实例分配的最大值显示为 2000 TB。为什么会这样显示?

附上截图。请检查它并帮助我了解这一点。

在此处输入图片说明

sql-server memory

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

带双引号的动态 SQL

我正在尝试运行动态 SQL 语句,它适用于任何storename没有撇号的语句。但是,当其中storename包含撇号时,语法不正确,但是在这种情况下我无法使用动态 SQL。

我应该如何修改此语法storename以包含 apastrophe?

这是 DDL

Declare @TestHyphens Table(StoreName varchar(500),topItemSale varchar(500))

Insert Into @TestHyphens (StoreName, topItemSale) Values
('Bob''s Burger''s','Pen'), ('Jacks Coffee Shop','Pencil')
,('Larry''s Hair Shack','Rainbow'), ('Manny''s Sandwich Shop','Sunglasses')

Declare @sql nvarchar(4000), @storename varchar(500)

Declare db_cursor CURSOR FOR
Select StoreName
FROM @TestHyphens

OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @storename

While @@FETCH_STATUS = 0
BEGIN

        Set @storename = REPLACE(@storename, '''', '''''''''');

        SET @storename = CHAR(39)+CHAR(39)+@storename+CHAR(39)+CHAR(39);

        SET @SQL = N'Select * from @TestHyphens where …
Run Code Online (Sandbox Code Playgroud)

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

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

在 SQL Sentry 中启用碎片管理器

在 SQL Sentry 中启用 Fragmentation Manager 会导致 SQL 实例运行缓慢?是否需要额外的资源?

sql-server

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

SQLServer 中的 NVARCHAR 到 AWS Redshift 中的 VARCHAR

我正在尝试将表从 SQL 服务器移动到 AWS Redshift。在尝试移动 NVARCHAR 字段时,我读到 Redshift 在内部将 NVARCHAR 转换为 VARCHAR。那么,SQL Server 中的 NVARCHAR(100) 将等同于 Redshift 中的 VARCHAR(100) 或 Varchar(200) 吗?如果我想直接将 SQLServer 中的 NVARCHAR 字段定义为 Redshift 中的 VARCHAR,是否需要将字段长度加倍?

sql-server aws redshift

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

在 AlwaysOn 副本上创建 SQL 登录名和用户

我有一个数据库 (DB1),它同步到另一台服务器上的 (DB2)(通过 AlwaysOn - SQL Server 2014)。

我想授予用户对 DB2 的读取权限。我在 DB1 中创建了一个 SQL 登录名和数据库用户。新的数据库用户迁移到 DB2,但 SQL 登录名没有迁移(这是有道理的)。

问题是,当我尝试在 DB2 上为用户创建 SQL 登录并授予用户对 DB2 的读取权限(绑定到来自 DB1 的用户帐户)时,我收到一条错误消息,指出 DB2 是只读的且无法修改。

那么,我怎样才能做到这一点?

sql-server availability-groups logins

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