标签: sql-server-2008

如何区分单个数据库中的系统和用户定义的角色?

有没有办法区分系统角色/用户和用户定义的角色/用户?作为系统角色/用户,我了解在创建数据库时隐式安装/分配的角色/用户。作为用户定义的角色/用户,我理解之后“手动”创建的角色/用户。

我发现的唯一方法是查看结果

select * from sys.database_principals order by create_date, is_fixed_role desc
Run Code Online (Sandbox Code Playgroud)

或者通过将结果与新创建的数据库进行比较。还有其他方法吗?

sql-server-2008 role users

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

如何分别显示IN子句中每一项的查询结果?

也许这是一个新手问题,但我试图获得表中每个帐户的余额总和。

我正在尝试以下

Select 
    SUM(BALANCE)  
from
    dbo.account_balances  
where 
    ACCT IN (
            1000, 1001, 1002...)  
Run Code Online (Sandbox Code Playgroud)

这给了我总余额,我明白为什么。我需要帮助弄清楚如何在查询结果中单独查看每个帐户的余额。

我无权修改表格。没有 NULL。

sql-server-2008

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

如何在 SQL Server 中按字母数字代码排序

我有一个包含一些项目代码的表格。这些代码是

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-2008 sql-server order-by case

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

在 SQL Server 中禁用查找约束

我正在对 SQL Server 中的约束进行审计。

如何找到所有未启用的约束?

在使用下一个声明之后:

alter table mytable nocheck constraint all
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server constraint alter-table ddl

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

SQL Server 2008 - 一列上的组合索引 + 其他单独索引

最近,我一直在重构我为雇主开发的产品的 SQL Server 索引。这些产品之一是包含多个用户级别的在线仪表板。

每个用户(管理员级别)都可以创建项目,然后他们可以将这些项目链接到以下用户级别的用户。每个项目都有自己的Name字段以及AdministratorUserId跟踪项目管理员的字段。我在这两个字段上创建了一个组合的非聚集唯一索引,这意味着每个管理员的项目名称必须是唯一的。

现在,这里的渔获:我注意到,我经常做一个选择的AdministratorUserId 唯一,而不是Name。根据索引指南,如果我错了,请纠正我,我将在该字段上创建一个非聚集索引以优化我的查询。

我的问题是 - 我现有的Name+索引是否AdministratorUserId已经改进了我的查询,还是建议除此之外创建一个单独的索引?AdministratorUserId存在于两个单独的索引中会不会有任何不利之处?

sql-server-2008 sql-server

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

寻找时间差异

我正在尝试编写一个存储过程来确定两次之间的秒数差异。如果我要对我知道可以使用的值进行硬编码

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' 之间的秒数差异

sql-server-2008 t-sql datetime

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

Logshipping 中的登录问题

我已在主服务器 A 和辅助服务器 B 中配置了日志传送。

一切正常,直到我使备用数据库联机。

用户无法登录辅助 serverB 数据库(位于已联机的辅助服务器上)

谁可以帮我这个事?

sql-server-2008 sql-server sql-server-2008-r2 sql-server-2012

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

VLDB - 创建 SQL 数据库快照并运行精细的 DBCC CHECKDB 命令

我有一个 25TB db(SQL2008 Enterprise SP4),它似乎没有在生产中运行 CHECKDB。不知道它是否在某个时候针对恢复的备份运行。现在我没有空间在连接到同一存储的另一台服务器上恢复副本。

我需要能够运行 checkcatalog、checkalloc 和 checktable,但即使对于小表,它似乎也无法创建内部稀疏文件 dbcc 快照。

所以我想知道我是否可以在另一个驱动器上创建一个 SQL 数据库快照,然后针对它运行这些命令,然后在完成后删除快照数据库。

谢谢!

——托德

sql-server-2008 sql-server dbcc-checkdb vldb dbcc-checktable

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

表访问的简单记录

在 SQL Server 2008 中,是否有一些简单的日志记录选择特定表的频率(一小时、一天、一周等)?我有一个大表,可被数十个应用程序和大量网页访问。数据提供者威胁要对可用内容进行重大更改,我需要开始演示访问了多少数据。

sql-server-2008

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

收集整个 SQL Server 实例的磁盘空间指标

我对 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 sql-server disk-space

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