在 SQL Server 中,我总是发现获取数据集的最大行数很痛苦,我正在寻找一个方法列表来检索最大行数,并提供一些有关性能和可维护性的指导。
示例表:
DECLARE @Test TABLE (ID INT IDENTITY(1,1), name VARCHAR(50),
dateOfBirth DATETIME, TaxNumber varchar(10))
INSERT INTO @Test (name, dateOfBirth, TaxNumber)
SELECT 'Fred', convert(datetime, '25/01/1976', 103), '123' UNION ALL
SELECT 'Bob', convert(datetime, '03/03/1976', 103), '234' UNION ALL
SELECT 'Jane', convert(datetime, '13/06/1996', 103), '345' UNION ALL
SELECT 'Fred', convert(datetime, '14/02/1982', 103), '456' UNION ALL
SELECT 'Bob', convert(datetime, '25/10/1983', 103), '567' UNION ALL
SELECT 'Jane', convert(datetime, '12/04/1995', 103), '678' UNION ALL
SELECT 'Fred', convert(datetime, '03/03/1976', 103), '789'
select * from …Run Code Online (Sandbox Code Playgroud) 我现在有点困惑。有人可以用一个简单的答案来回答我这个问题。
我有一个用户 [user_test],并为一个数据库 [database_test] 分配了 [db_owner] 角色。用户的默认架构是 [user_test] 并且几乎所有来自 [database_test] 的对象都是在架构 [user_test] 下创建的。在数据库中还存在 3 个具有架构 [dbo] 的对象
用户对两种模式都有权限:[dbo] 和 [user_test],无需在对象引用前面的 select 语句中明确指定它们。
当用户 [user_test] 调用对象时,SQL 检查的第一个模式是什么?
我的意思是,如果 [user_test] 从 dbo 模式中选择一个对象(前面没有模式),SQL 会先检查它指定的默认模式,然后再检查 dbo 吗?
谢谢,
我必须在 sql server 2000 环境中对我们的一个数据库进行数据库清理。清理主要包括禁用所有触发器、删除所有旧数据、启用触发器和收缩事务日志。
目前我遇到的最大问题是禁用触发器。这在 sql 2005 / 2008 中会非常容易,因为它们包含“禁用所有触发器”命令。我有一个查询来列出所有触发器,尽管它没有列出触发器的状态(这将是一个奖励)
SELECT S2.[name] TableName, S1.[name] TriggerName, CASE WHEN S2.deltrig = s1.id THEN 'Delete' WHEN S2.instrig = s1.id THEN 'Insert' WHEN S2.updtrig = s1.id THEN 'Update' END 'TriggerType' , 'S1',s1.*,'S2',s2.* FROM sysobjects S1 JOIN sysobjects S2 ON S1.parent_obj = S2.[id] WHERE S1.xtype='TR'
Run Code Online (Sandbox Code Playgroud)
对于每个表,记录的删除将是一个简单的删除,这可能不是最有效的方法,而是规定的方法。
Shrinking the Transaction Log 也是排序的,我在 Microsoft 支持站点上找到了一篇关于使用 DBCC 的文章
任何建议将不胜感激
我在使用 InnoDB 存储引擎的 MySQL 5.5 中有一个包含大约 3000 万行的表。这个表有一个外键,它链接到另一个大约有 300 万行的表。
我想向更大的表添加一个主键,但我不确定如何最好地做到这一点。没有我可以使用的现有列(或列集),那么我应该怎么做呢?
我看到了一些对内部 InnoDB 记录 ID 的引用,但还没有找到是否可以访问。
否则,也许我需要转储并重新加载数据,手动添加 id。
谢谢。
我已经将 CLR 用户定义函数用于非常特定的实例,例如复杂的字符串处理,但从维护的角度来看通常不喜欢它们(又是另一个隐藏代码的地方)。人们如何看待这种功能的优缺点,从性能和维护的角度来看,是否有关于何时使用它们的最佳实践指南?
曾使用至少两种顶级 DB 产品(例如 Oracle、SQL Server、Informix、Sybase、DB2、Teradata)在 SQL 方面进行可扩展性工作的人是否知道 DB 供应商的 SQL 方言彼此之间有何不同。由于我来自 Oracle 背景,因此我对
start with .. connect by想到)select x, y from a, b where...)问题可能归结为这些功能是否以及在多大程度上受 ansi 标准的监管。
实际上,我想知道是否有“经验法则”可以指示我是否(以及如何)采用在一个数据库上运行的 SQL DML 语句并让它在另一个数据库上运行。
示例:我有 30 多个以前缀“dp_”开头的表,大约有 12 个以“ex_”开头。
问题:如何在一个查询中删除所有以“dp_”开头的表?
我正在使用ExpressMaint和 Windows 计划任务来创建一些 MS SQL Server 2008 R2 Express 数据库的每周完整和每日差异备份
每周满额
expressmaint -S (local)\SQLExpress -D ALL -T DB -R D:\Backup\Reports -RU WEEKS -RV 1 -B D:\Backup\Data -BU WEEKS -BV 4 -V -C
Run Code Online (Sandbox Code Playgroud)
每日差异
expressmain -S (local)\SQLExpress -D ALL -T DIF -R D:\Backup\Reports -RU WEEKS -RV 1 -B D:\Backup\Data -BU days -BV 7 -V -C
Run Code Online (Sandbox Code Playgroud)
当我将这些恢复到某个点时,我必须单独恢复每个备份。有没有什么办法可以连锁的一系列备份到一个单独的恢复将重新发挥正确的顺序?
当我尝试这个时,我收到错误
执行 Transact-SQL 语句或批处理时发生异常。(Microsoft.SqlServer.ConnectionInfo)
附加信息:
加载在“C:\Foo\Bar_FullBackup_20110130_2346.bak”上的媒体被格式化为支持 1 个媒体系列,但根据备份设备规范预计有 2 个媒体系列。RESTORE HEADERONLY 异常终止。(Microsoft SQL Server,错误:3231)
如需帮助,请单击:http : //go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.1600&EvtSrc=MSSQLServer&EvtID=3231&LinkId=20476
编辑
当您右键单击数据库时,我正在使用任务菜单中的还原对话框。从那里,我选择“从设备恢复”并添加我希望从中恢复的 .bak …
我试图让我的审计文件更易于阅读,我将审计跟踪配置为 xml,扩展。问题是,如果我的服务器忙碌并重复使用 pids - 日志将被附加到同一个文件中。
我知道如果审计文件已经存在,有一种方法可以创建一个带有后缀的新文件。我怎样才能做到这一点?我使用 Oracle 10.0.4.0
目前,每当我编写一个添加可以包含空值的列的查询时,我都会将每个字段包装在isnullor 中coalesce,例如coalesce(score1,0) + coalesce(score2,0). 有没有更好的方法来处理这个问题,或者这是标准做法?
mysql ×2
sql-server ×2
backup ×1
dml ×1
innodb ×1
oracle ×1
oracle-10g ×1
primary-key ×1
restore ×1
security ×1
sql-standard ×1