是否有任何内置方法将 Oracle 数据库角色映射到 Microsoft Active Directory 组?
我在 SQL Server 2008 中有一个一直在增长的数据库,我想知道哪些表在过去 6 个月中增长最快。
select value
from persons p join persons2 p2
on left(p.lastname,1) = left(p2.lastname,1)
Run Code Online (Sandbox Code Playgroud)
SQL 服务器。有没有办法让这个 SARGable/运行得更快?我无法在persons 表上创建列,但我可以在persons2 上创建列。
我想专注于 SQL 语言规范之一,以供学习和参考。哪个版本的 SQL 标准在 DBMS 中得到最广泛的支持,以便我可以将时间和精力集中在它上面?
我一直在努力让我们的数据库客户端主动避免填满他们正在使用的数据库所在的分区。
由于我们所有的客户端都与数据库管理器在同一台主机上,因此对于用户创建的表空间来说应该很容易;客户端可以查找表空间的文件系统路径(在 spclocation 中),并使用操作系统调用来检查有多少可用空间:
adb=> select * from pg_tablespace;
spcname | spcowner | spclocation | spcacl
------------+----------+-------------------+---------------------
pg_default | 10 | |
pg_global | 10 | |
adb | 2033793 | /database/adb | {adb=C/adb}
Run Code Online (Sandbox Code Playgroud)
我无法从客户端看到如何获取全局表空间存储位置的路径;在上面的查询中为它返回一个空字符串。
不幸的是,我们在该领域有许多遗留系统使用在全局表空间中创建的特定数据库,将它移到用户创建的表空间中将是一项巨大的努力。
希望我只是错过了一些非常简单的东西。
在活动监视器中,以下查询导致高 CPU 和 281 毫秒的平均持续时间。
WAITFOR (
RECEIVE conversation_handle
, service_contract_name
, message_type_name
, message_body
FROM ExternalMailQueue
INTO @msgs
)
, TIMEOUT @rec_timeout
Run Code Online (Sandbox Code Playgroud)
任何想法或步骤如何解决这个问题?
目前,我只有一个备份文件 IMTDB.bak,它与数据库本身在同一个 HDD 上。我想通过本质上将它“复制”到另一个磁盘来增加这个数据库备份的冗余,但是我收到一个错误“服务器备份失败,媒体被格式化为支持 2 个媒体系列”。我认为这意味着当我创建备份时,它只是将备份放在一个驱动器上,我不能追溯添加更多。我想将备份迁移到另一个驱动器(实际上只是复制它),但我不想删除当前备份来执行此操作。
我该怎么办?将 IMTDB.bak 复制到另一个驱动器上的文件夹是否安全?
我在一台服务器上有 980 个数据库,我应该授予几个用户只读访问权限。
我当然不想运行alter DB add user...语句,因为它绝对是耗时的。
不知道有没有用exec sp_addrolemember 'db_datareader', 'user'?
有人可以让我知道是否可以做其他事情吗?
我试图从表中查询 0 到 65,000 行。
服务器使用的是Microsoft SQL Server 2014,我无法更改服务器上的硬件。
架构
[Id] (PK) INT
[varchar1] VARCHAR(4) Normal Cardinality
[varchar2] VARCHAR(250) Normal Cardinality
[varchar3] VARCHAR(250) Normal Cardinality
[varchar4] VARCHAR(100) Normal Cardinality
[date1] DATETIME High Cardinality
[varchar5] VARCHAR(100) Low Cardinality
[varchar6] VARCHAR(1000) Normal Cardinality
[varchar7] VARCHAR(100) Normal Cardinality
[varchar8] VARCHAR(20) Normal Cardinality
[varchar9] VARCHAR(100) High Cardinality
[xml1] XML Low Cardinality
Run Code Online (Sandbox Code Playgroud)
询问
以下查询是存储过程的一部分(其余部分无关紧要,因为它对存储过程的性能影响不大)。列名称已替换为列类型和编号:
SELECT [varchar1]
, [varchar4]
, [date1]
, [varchar5]
, [varchar6]
, [varchar7]
, [varchar8]
, [varchar9]
, [xml1]
FROM [database].[dbo].[table] WITH …Run Code Online (Sandbox Code Playgroud) 考虑以下最小、完整且可验证的示例代码(请参阅此处的 dbfiddle):
CREATE TABLE [dbo].[test]
(
[i] bigint NOT NULL
identity(1,1)
PRIMARY KEY CLUSTERED
, [d] varchar(10) NOT NULL
);
GO
Run Code Online (Sandbox Code Playgroud)
使用INSTEAD OF INSERT, UPDATE触发器:
CREATE TRIGGER [dbo_test_trigger]
ON [dbo].[test]
INSTEAD OF INSERT, UPDATE
AS
BEGIN
IF ROWCOUNT_BIG() = 0 RETURN;
SET NOCOUNT ON;
MERGE INTO [dbo].[test] [target]
USING [inserted] [source] ON [target].[i] = [source].[i]
WHEN NOT MATCHED THEN
INSERT
(
[d]
)
VALUES
(
[source].[d]
)
WHEN MATCHED THEN
UPDATE
SET [target].[d] = [source].[d];
END; …Run Code Online (Sandbox Code Playgroud) sql-server ×7
disk-space ×1
oracle ×1
postgresql ×1
role ×1
security ×1
sql-standard ×1
t-sql ×1
trigger ×1