小编use*_*567的帖子

如何在 SQL Server 中正确处理 TimeZone?

我的本地开发服务器在中东,但我的生产服务器在英国。

我需要在他们的时区向用户显示日期。例如,如果用户在沙特阿拉伯,那么我需要根据沙特阿拉伯格式显示时间。

我应该创建一个名为 TimeZone 的新数据库表并以 UTC 格式保存时间吗?

sql-server-2008 sql-server timezone

44
推荐指数
4
解决办法
25万
查看次数

允许用户在他自己的架构内做任何事情,但不能创建或删除架构本身

我在 SQL Azure 中创建了一个架构,并向数据库角色授予了以下权限:

CREATE ROLE myrole AUTHORIZATION dbo;
EXEC sp_addrolemember 'myrole', 'myuser';

CREATE SCHEMA myschema AUTHORIZATION dbo;

GRANT ALTER, CONTROL, DELETE, EXECUTE, INSERT, REFERENCES, SELECT, UPDATE, VIEW 
DEFINITION ON SCHEMA::myschema TO myrole;

GRANT CREATE TABLE, CREATE PROCEDURE, CREATE FUNCTION, CREATE VIEW TO myrole;
Run Code Online (Sandbox Code Playgroud)

通过上面定义的权限myuser可以创建/删除自己的模式,所以为了克服这个问题我尝试了 ALTER ANY SCHEMA 权限。但此权限也拒绝用户创建/删除表。

需要什么权限才能允许用户在他自己的架构中做任何事情,但不能创建或删除架构本身?

schema sql-server permissions

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

我可以在装有 2008 R2 的机器上安装 SQL Server 2012 吗?

我使用 SQL Server 2008 R2 已经有一段时间了,它运行良好。现在我需要使用 SQL Server 2012。这会影响我现有的数据库吗?在运行 SQL Server 2008 R2 的计算机上安装 SQL Server 2012 涉及多少风险?

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

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

带 BEGIN/END 和不带 BEGIN/END 的 SP 的区别

我发现一些 SP(存储过程)写成,

CREATE PROCEDURE [dbo].[XXX]
(
   -- Parameters
)
BEGIN

--- Actual Work

END
Run Code Online (Sandbox Code Playgroud)

还有一些作为

CREATE PROCEDURE [dbo].[XXX]
(
   -- Parameters
)


--- Actual Work
Run Code Online (Sandbox Code Playgroud)

是什么让它与众不同?

sql-server t-sql

8
推荐指数
2
解决办法
6019
查看次数

将与表相关的条件放在 JOIN 中更好?

我已经看到很多人将与表相关的条件放在 JOIN 子句上。看这个例子,

SELECT i.Name
  FROM sys.TABLES AS tbl
  INNER JOIN sys.indexes AS i
    ON (i.index_id > 0 AND i.is_hypothetical = 0) 
    AND (i.object_id = tbl.object_id)
  WHERE (i.is_unique = 1 AND i.is_disabled = 0) 
    AND (tbl.Name = 'Warehouse')


SELECT i.Name
  FROM sys.TABLES AS tbl
  INNER JOIN sys.indexes AS i
    ON (i.object_id = tbl.object_id)
  WHERE (i.index_id > 0 AND i.is_hypothetical = 0) 
  AND (i.is_unique = 1 AND i.is_disabled = 0) 
  AND (tbl.Name = 'Warehouse')
Run Code Online (Sandbox Code Playgroud)

查询相同,但不同之处在于,第一个(i.index_id > 0 AND i.is_hypothetical = …

sql-server sql-server-2012

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

将可空列添加到生产数据库需要太多时间

我正在运行生产数据库,通常每分钟有 50-100 个插入。我正在尝试使用以下方法在生产数据库中添加一个新列,

ALTER TABLE MyDB ADD [MyColumn] varchar(30)
GO
Run Code Online (Sandbox Code Playgroud)

这个查询一直在运行,直到我停止它才完成。我还能做什么?

sql-server sql-server-2014

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

列上的索引只有 3 个状态?

我有一个包含数百万行的表。这个表有一个我们经常过滤的列(意味着我们经常在WHERE子句中使用它),值是Insert/Update/Ignored。向列添加索引是否有意义?有人告诉我在少数值列上添加索引没有任何好处

sql-server sql-server-2012

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

目前所有连接都收到“超时过期”

我有一个连接到 SQL Server 的应用程序。目前我得到,

Timeout expired.  The timeout period elapsed prior to obtaining a connection from the pool.  This may have occurred because all pooled connections were in use and max pool size was reached.
Run Code Online (Sandbox Code Playgroud)

我跑的时候,

SELECT 
    DB_NAME(dbid) as DBName, 
    COUNT(dbid) as NumberOfConnections,
    loginame as LoginName
FROM
    sys.sysprocesses
WHERE 
     DB_NAME(dbid) ='MyDb'
GROUP BY 
    dbid, loginame 

DBName  NumberOfConnections LoginName
MyDb    10                     sa                                                                                                                              
MyDb    109                   MyUser
Run Code Online (Sandbox Code Playgroud)

所有进程的状态是sleeping,cms是AWAITING COMMAND

这是我的代码,

private async Task<object> ExecuteAsync<T>(ExecutionType executionType, CommandType commandType, string commandText, IsolationLevel …
Run Code Online (Sandbox Code Playgroud)

sql-server ado.net

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

查找事务日志“tempdb”因“ACTIVE_TRANSACTION”而满的原因

我们的应用程序由于以下原因突然停止工作The transaction log for database 'tempdb' is full due to 'ACTIVE_TRANSACTION'.。现在,它又开始工作了。但我怎样才能知道这个错误出现的确切原因呢?

sql-server sql-server-2014

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

有条件地 OR vs CASE vs IF

可以说,我有一个查询,

SELECT * FROM MyTable WHERE MyParam = 0 OR MyColumn = MyParam
Run Code Online (Sandbox Code Playgroud)

这里 MyParam 是参数和可选的。因此,它只检查MyColumn = MyParamMyParam 是否不为 0。但是我们的 DBA 说 OR 会使其变慢,而 db 会受到影响。另一种选择是,

IF MyParam = 0 
SELECT * FROM MyTable WHERE MyColumn = MyParam
Run Code Online (Sandbox Code Playgroud)

这种方法的问题在于我们有很多可选参数。所以,我们的查询变得非常非常大。另一种选择是 CASE。

所以你们的建议是什么。我在谈论一般是 Oracle 还是 SQL Server。

oracle sql-server

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

数据库表/列规则

我们正在做一个新的数据库设计,我们预先设置一些规则。我不知道制定这些规则有多大意义,

  1. 每个表名和列名都应该有意义。它应该提供有关表或列用途的信息。

  2. 表名不应超过 27 个字符,列名不应超过 30 个字符。

  3. 表名是复数。例如:COMPANIES, EMPLOYEES, PERSONS, GENDERS, RELIGIONS, COUNTRIES, ...

  4. 每个表都有一个主键,table_name_IDNUMBER(15). 表名在主键列中用作单数。示例:该USER_REQUESTS表的主键为USER_REQUEST_ID

  5. 如果表名或列​​名超出限制,则使用合适的缩写。示例:CMS_EXEMPTIONS是保留内容管理系统豁免的表。

  6. 保留事务数据的表应以_TRANS. 示例:COMPANY_TRANS是保存公司相关交易数据的表。

  7. 每个表有 4 个 WHO 列,如下所示:

    CREATE_USER        NUMBER(15)
    CREATE_DATE        DATE
    MODIFY_USER        NUMBER(15)
    MODIFY_DATE        DATE
    
    Run Code Online (Sandbox Code Playgroud)
  8. 作为外键关系的列被命名为被引用表的主键。示例:如果一个表有对该COUNTRIES表的引用,则引用列也被命名COUNTRY_ID为该COUNTRIES表的主键。

  9. 如果由于第一条规则(有意义的名称),引用列的含义应该不同于第 8 条规则,则应用有意义的名称规则。例如:COUNTRIES如果它用于保持一个人的国籍而不是命名为 ,那么nationality 和 country 列都与table有关系NATIONALITY_ID

  10. 如果该表有多个与同一个表相关,则它们会被赋予不同的名称,例如BIRTH_COUNTRY_IDPASSPORT_ISSUE_COUNTRY_ID

  11. 如果表是表之间的关系表,则表名包含两个表名。

给有意义的名字一直是我们命名的第一条规则。

oracle database-design

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

每行带有图像数据库 base64 的表导致死锁/块

我们有一张桌子,

CREATE TABLE [dbo].[MyTable](
    [MasterKey] [uniqueidentifier] NOT NULL,
    [DetailKey] [varchar](100) NULL,
    [JSON] [nvarchar](max) NOT NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [ix_MyTable_details] ON [dbo].[MyTable]
(
    [MasterKey] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
Run Code Online (Sandbox Code Playgroud)

我们有以下查询导致太多死锁/块。

IF EXISTS(SELECT 1 from  [MyTable](nolock) where  [MasterKey]= @MasterKey AND [DetailKey] =  @DetailKey)
BEGIN

 UPDATE [MyTable]
           SET [JSON] = @JSON
    WHERE  [MasterKey]= @MasterKey AND [DetailKey] …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2014

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