小编Aar*_*and的帖子

删除 Windows 登录后,数据库用户未报告为孤立用户

我删除了 SQL Server Windows登录。然后我运行下面的代码来检查孤立的数据库用户。但是,与删除的 Windows 登录对应的数据库用户不会显示为孤立用户。

为什么会这样?

EXEC sp_change_users_login @Action = 'Report';
Run Code Online (Sandbox Code Playgroud)

sql-server users logins

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

刷新数据库后如何保存然后恢复权限

STAGING 环境中的数据库每 N 周被更新一次的 PRODUCTION 副本覆盖。

在现有数据库被生产副本覆盖之前,保存然后恢复用户、角色和明确授予的权限的正确方法是什么?

我不想恢复 PRODUCTION 中的用户和权限,而是恢复数据库被覆盖之前 DEV 环境中的用户和权限。

这个刷新过程必须自动化,因为有许多不同的环境,有几十个实例,可能托管多达 10 个数据库。

sql-server permissions

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

如何抑制错误日志中的激活过程输出?

我发现 SQL Server 错误日志中记录了许多以下信息性消息(没有任何错误的批量消息)。

在队列“y”上运行的激活过程“x”输出以下内容:“z”

我想停止这种记录。是否有任何跟踪标志可以提供帮助?

sql-server stored-procedures service-broker error-log

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

插入多个查询是否与单个查询花费相同的时间?

我有一个要求,我必须插入很多行。对于插入,我们像这样使用

insert into emp(name,age) values('abc',12);
Run Code Online (Sandbox Code Playgroud)

这将只插入一行。对于插入多行,我们可以多次编写插入查询或编写具有多个值的单个查询。例如

条件 1

insert into emp(name,age) values('abc1',121);
insert into emp(name,age) values('abc2',122);
insert into emp(name,age) values('abc3',12);
Run Code Online (Sandbox Code Playgroud)

条件2

insert into emp(name,age) values('abc',12),('abc2',122),('abc3',12);
Run Code Online (Sandbox Code Playgroud)

我的问题是上面的(条件 1 和条件 2)都需要时间吗?我猜条件 2 比条件 2 花费的时间少。如果我的猜测是真的,那么原因是什么?

performance sql-server insert t-sql sql-server-2012

3
推荐指数
2
解决办法
5151
查看次数

是否可以在 Windows 7 上安装 SQL Server 2014 Enterprise?

我计划在 64 位 HP 工作站上安装 SQL Server 2014 Enterprise Edition。

我阅读了以下软件和硬件要求:

根据该页面,企业版似乎不支持 Windows 7。参考正确吗?

sql-server installation sql-server-2014

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

DROP LOGIN 在 SQL Server 2014 上失败

我们有一个所有者为“dbowner”的数据库。我们的安装过程删除用户“dbowner”的登录名并重新创建它。

在任何其他版本的 SQL Server 上,以下 SQL 查询成功:

USE [master]
DROP LOGIN 'dbowner'
Run Code Online (Sandbox Code Playgroud)

在 SQL Server 2014 上,相同的查询返回以下错误:

登录 'dbowner' 拥有一个或多个数据库。在删除登录之前更改数据库的所有者。

谁能解释为什么这在 SQL Server 2014 上会有所不同?删除登录适用于所有其他版本的 SQL Server(2005、2008 和 2012)。

是否有任何设置可以强制在 SQL Server 2014 上使用相同的设置?

更新:

我可以用一个使用 Windows 用户的例子来复制这个。有任何想法吗?

CREATE LOGIN [comp\winuser] FROM WINDOWS;
GO
CREATE DATABASE mydb;
GO
ALTER AUTHORIZATION ON DATABASE::mydb TO [comp\winuser];
GO
DROP LOGIN [comp\winuser];
GO
Run Code Online (Sandbox Code Playgroud)

更新 2:

谢谢您的意见。我同意删除所有者的登录名是不可取的(但除 SQL Server 2014 外,其他地方的 Windows 用户都可以使用)。然而,我们的安装脚本目前依赖于它,极其复杂的数据库安装过程是 15 年前某个人制作的(他不再与我们合作了)。如果可能(只要它有效),我们希望避免更改该领域。

在我看来,我们有三个选择:

  1. 使 SQL 2014 像以前的版本一样运行并保持脚本不变。我们更喜欢这个选项,我在这里发帖看看是否可以做到。
  2. 将所有者更改为其他用户,删除并创建所有者登录并将所有者移回。这是一个黑客,但可能会奏效。
  3. 改变我们处理用户的方式并停止放弃所有者的登录。这将是正确的方法,但也是最大的变化。

security sql-server users logins sql-server-2014

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

将两个值相加时仅显示大于某个数字的结果

我有一个查询将同一个表中的两个值相加,然后计算一个作为另一个的百分比

select account_no,
  100*((sum(COMMISSION/100)) / (SUM(AMOUNT/100)))
from accounts etc
Run Code Online (Sandbox Code Playgroud)

我想要做的只是返回该值大于一定数量的结果(在本例中为 4)。如果我在 where 子句中添加一些内容,例如:

where 100*((sum(COMMISSION/100)) / (SUM(AMOUNT/100))) > 4
Run Code Online (Sandbox Code Playgroud)

我收到错误:

聚合可能不会出现在 WHERE 子句中...

我希望有一种简单的方法可以解决这个问题,但我还没有学到。有任何想法吗?

sql-server-2008

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

通过链接服务器查询 sys.master_files

通过链接服务器查询 sys.master_files,我没有得到任何结果。

为什么?我如何解决这个问题?

sql-server metadata linked-server

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

Jetbrains 0xDBE:如何加载 SQL Server .bak 文件?

我正在尝试这个新的 Jetbrains IDE,但我不知道如何加载 SQL Server 2008 R2 .bak 文件。也许我在看错误的菜单。是否可以?

sql-server backup sql-server-2008-r2

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

可用性组对于 4 TB 数据是否可行?

目前我们有一个大小为 4 TB 的数据库。我们希望将其放入 2014 年可用性组以扩展读取。该数据库中的数据发生了很大变化。

我有以下问题:

  1. 这个大小是否适合可用性组(我们希望有 2-3 个副本)?
  2. 如果网络中断 1 小时,我们可以多快同步副本?
  3. 在使用可用性组之前,你们有什么我应该遵循的考虑吗?

sql-server scalability availability-groups

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