有没有办法区分系统角色/用户和用户定义的角色/用户?作为系统角色/用户,我了解在创建数据库时隐式安装/分配的角色/用户。作为用户定义的角色/用户,我理解之后“手动”创建的角色/用户。
我发现的唯一方法是查看结果
select * from sys.database_principals order by create_date, is_fixed_role desc
Run Code Online (Sandbox Code Playgroud)
或者通过将结果与新创建的数据库进行比较。还有其他方法吗?
也许这是一个新手问题,但我试图获得表中每个帐户的余额总和。
我正在尝试以下
Select
SUM(BALANCE)
from
dbo.account_balances
where
ACCT IN (
1000, 1001, 1002...)
Run Code Online (Sandbox Code Playgroud)
这给了我总余额,我明白为什么。我需要帮助弄清楚如何在查询结果中单独查看每个帐户的余额。
我无权修改表格。没有 NULL。
我有一个包含一些项目代码的表格。这些代码是
e.g.: B001, B002, Z15001, Z14001, P003,...
Run Code Online (Sandbox Code Playgroud)
我需要这个结果表:
Z15001
Z15002
...
B001
B002
...
C001
C002
...
Z14099
Z14098
Z14097
...
Z13099
Z13098
...
Z13001
Run Code Online (Sandbox Code Playgroud)
我试过了,但顺序不对。
select *
from table
order by
case
when Kod like 'Z15%' then 1
when Kod like 'B%' then 2
when Kod like 'C%' then 3
when Kod like 'D%' then 4
when Kod like 'E%' then 5 else 6 end asc, Kod asc
, case when Kod NOT LIKE 'B%'
AND Kod NOT LIKE …Run Code Online (Sandbox Code Playgroud) 我正在对 SQL Server 中的约束进行审计。
如何找到所有未启用的约束?
在使用下一个声明之后:
alter table mytable nocheck constraint all
Run Code Online (Sandbox Code Playgroud) 最近,我一直在重构我为雇主开发的产品的 SQL Server 索引。这些产品之一是包含多个用户级别的在线仪表板。
每个用户(管理员级别)都可以创建项目,然后他们可以将这些项目链接到以下用户级别的用户。每个项目都有自己的Name字段以及AdministratorUserId跟踪项目管理员的字段。我在这两个字段上创建了一个组合的非聚集唯一索引,这意味着每个管理员的项目名称必须是唯一的。
现在,这里的渔获:我注意到,我经常做一个选择的AdministratorUserId 唯一,而不是Name。根据索引指南,如果我错了,请纠正我,我将在该字段上创建一个非聚集索引以优化我的查询。
我的问题是 - 我现有的Name+索引是否AdministratorUserId已经改进了我的查询,还是建议除此之外创建一个单独的索引?AdministratorUserId存在于两个单独的索引中会不会有任何不利之处?
我正在尝试编写一个存储过程来确定两次之间的秒数差异。如果我要对我知道可以使用的值进行硬编码
CAST(datediff(second, [start], [end])/3600.0 As Decimal(18,4)))
Run Code Online (Sandbox Code Playgroud)
但我只需要在满足条件的情况下才能获得差异。我的想法是做这样的事情
Declare @diff decimal(18,4)
Create Table #Dope
(
date1 datetime
,inlate decimal(16,4)
)
INSERT INTO #Dope (date1) Values
('2016-01-04 08:08:47.000'),
('2016-01-04 08:25:59.000'),
('2016-01-04 08:27:47.000'),
('2016-01-04 08:00:00.000')
if CAST(date1 As Time) > '08:00:00.000'
--Here is where the capture would come but I am unsure of how to type it
SET @diff = CAST(datediff(second, [], [date1])/3600.0 As Decimal(18,4))
Run Code Online (Sandbox Code Playgroud)
如何将 Set 语句中的第一个日期时间设置为我需要秒差的当天上午 8 点?意思是,我不能只是将 '08:00:00.000' 硬编码到我的 Set 语句中,因为这两个日期我是不同的,这会给我跨越几天的秒数,这不是我所追求的。我只想看看 date1 和 '08:00:00.000' 之间的秒数差异
我已在主服务器 A 和辅助服务器 B 中配置了日志传送。
一切正常,直到我使备用数据库联机。
用户无法登录辅助 serverB 数据库(位于已联机的辅助服务器上)
谁可以帮我这个事?
sql-server-2008 sql-server sql-server-2008-r2 sql-server-2012
我有一个 25TB db(SQL2008 Enterprise SP4),它似乎没有在生产中运行 CHECKDB。不知道它是否在某个时候针对恢复的备份运行。现在我没有空间在连接到同一存储的另一台服务器上恢复副本。
我需要能够运行 checkcatalog、checkalloc 和 checktable,但即使对于小表,它似乎也无法创建内部稀疏文件 dbcc 快照。
所以我想知道我是否可以在另一个驱动器上创建一个 SQL 数据库快照,然后针对它运行这些命令,然后在完成后删除快照数据库。
谢谢!
——托德
sql-server-2008 sql-server dbcc-checkdb vldb dbcc-checktable
在 SQL Server 2008 中,是否有一些简单的日志记录选择特定表的频率(一小时、一天、一周等)?我有一个大表,可被数十个应用程序和大量网页访问。数据提供者威胁要对可用内容进行重大更改,我需要开始演示访问了多少数据。
我对 SQL Server 很陌生。我想收集整个 SQL Server 实例的数据库磁盘空间指标。
我找到了一个代码示例,可以收集每个数据库的磁盘空间信息。
IF OBJECT_ID('DISK.dbo.disk_activity') IS NOT NULL
DROP TABLE disk_activity
CREATE TABLE disk_activity (
servername NVARCHAR(100)
, database_id INT PRIMARY KEY
, name NVARCHAR(MAX)
, data_used_size DECIMAL(18,2)
, log_used_size DECIMAL(18,2)
)
DECLARE @SQL NVARCHAR(MAX)
SELECT @SQL = STUFF((
SELECT '
USE [' + d.name + ']
INSERT INTO DISK.dbo.disk_activity (servername, database_id, name, data_used_size, log_used_size)
SELECT
(SELECT @@SERVERNAME AS "Server Name") AS SERVER_NAME
, DB_ID()
, DB_NAME()
, SUM(CASE WHEN [type] = 0 …Run Code Online (Sandbox Code Playgroud) sql-server-2008 ×10
sql-server ×6
alter-table ×1
case ×1
constraint ×1
datetime ×1
dbcc-checkdb ×1
ddl ×1
disk-space ×1
order-by ×1
role ×1
t-sql ×1
users ×1
vldb ×1