只是一个关于手动故障转移的问题。如果我们使用 SSMS 执行故障转移与转到故障转移群集管理器并将角色移动到辅助节点,这是否重要?是否有首选方法或任何一种方法都可以?
我最近创建了一个新的 SQL Server 环境,我正在尝试尽可能使用最佳实践,尤其是最低特权的方法。我们环境中的其他服务器只有使用域管理员权限和 SA 权限的组合运行的作业,这“简单”且可怕。
除此之外,我有使用域帐户运行的数据库引擎DOMAIN\sqlengine和使用DOMAIN\sqlagent.
我有一个简单的维护计划,可以将服务器上的所有数据库完整备份到远程 UNC 路径。我曾假设/计划代理帐户 ( DOMAIN\sqlagent) 将执行计划的作业。作业因操作系统驱动的拒绝访问错误而失败。所以我DOMAIN\sqlagent在目录中添加了帐户修改权限,以便它可以执行备份。令我惊讶的是它又失败了。当我检查目标服务器的安全日志时,我看到这DOMAIN\sqlengine是帐户身份验证。该帐户没有获得 UNC 路径的权限。为什么引擎帐户而不是代理帐户运行作业?
如果我查看我DOMAIN\sqlagent为该维护计划中的所有作业设置的作业所有者。在作业步骤下,它被设置为作为“SQL Server 代理服务帐户”运行。
我做错了什么或不理解?
我们使用的是 SQL Server 2012(Service Pack 3),最近我们从一台服务器转移到了另一台服务器。之后我们遇到了问题SQL排序顺序问题。我们有很多报告,其中 order by 子句不存在。移动后,排序顺序已更改,报告中的结果与实际结果不同。
我知道通过在所有存储过程和视图中放置 Order by 子句来解决这个问题。由于文件数量庞大,有什么办法可以在SQL配置中解决这个问题吗?
我有以下形式的数据需要合并,以便我从两行输入数据创建一行,其中第二列是下一行减去一天的值。
我一直在努力想出一种方法来做到这一点,但没有走得太远。我希望这张图能解释这个问题:
表结构
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 2014 硬件。CPU 配置文件看起来很奇怪。我有 24 个 CPU,所有 CPU 在线可见,MAXDOP 为 0。SQL CPU 使用率达到 60% 的峰值并且不会超过这个值,尽管查询是高度 CPU 密集型的,并且大部分处于运行/可运行状态。我检查了会话日志转储,总请求时间仅略高于 CPU 时间,因此排除了 io 等待等。还检查了 OS CPU 使用率跟踪仅略高于 SQL CPU 使用率。想知道为什么 CPU 没有被充分利用。以前的硬件有 16 个 CPU 并且过去饱和度约为 95%
我正在尝试运行动态 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 Sentry 中启用 Fragmentation Manager 会导致 SQL 实例运行缓慢?是否需要额外的资源?
我正在尝试将表从 SQL 服务器移动到 AWS Redshift。在尝试移动 NVARCHAR 字段时,我读到 Redshift 在内部将 NVARCHAR 转换为 VARCHAR。那么,SQL Server 中的 NVARCHAR(100) 将等同于 Redshift 中的 VARCHAR(100) 或 Varchar(200) 吗?如果我想直接将 SQLServer 中的 NVARCHAR 字段定义为 Redshift 中的 VARCHAR,是否需要将字段长度加倍?
我有一个数据库 (DB1),它同步到另一台服务器上的 (DB2)(通过 AlwaysOn - SQL Server 2014)。
我想授予用户对 DB2 的读取权限。我在 DB1 中创建了一个 SQL 登录名和数据库用户。新的数据库用户迁移到 DB2,但 SQL 登录名没有迁移(这是有道理的)。
问题是,当我尝试在 DB2 上为用户创建 SQL 登录并授予用户对 DB2 的读取权限(绑定到来自 DB1 的用户帐户)时,我收到一条错误消息,指出 DB2 是只读的且无法修改。
那么,我怎样才能做到这一点?
sql-server ×10
t-sql ×2
aws ×1
clustering ×1
jobs ×1
logins ×1
memory ×1
permissions ×1
redshift ×1