当我备份数据库时,有没有办法排除该备份中的事务日志?或者我在想这个错误并恢复原始数据库需要事务日志的内容?
我无法缩小事务日志,因为数据库正在使用复制,我将不得不中断复制。
如果我发出此命令然后恢复数据库,它会返回一个 50 GB 的日志文件:
BACKUP DATABASE DatabaseName TO DISK = 'c:\temp\Database.bak'
Run Code Online (Sandbox Code Playgroud)
我必须将恢复的数据库更改为简单,然后在释放 50GB 之前缩小日志文件。我无法将原始数据库更改为 simple,因为它是复制副本。
我正在尝试按照以下方式编写查询:
select *
from tbl
where
col1 = 1
and col2 = 2
and col3 = 3
order by
...
;
Run Code Online (Sandbox Code Playgroud)
我首先想要所有 3 个WHERE条件匹配的所有结果(3/3),然后是任何 2 个条件匹配的所有结果(2/3),最后是任何 1 个条件匹配的结果(1/3)。
这 3 个结果集中的每一个都需要按 排序(col4, col5, col6)。
我可以在单个查询中做到这一点吗?
例如:
示例 http://img708.imageshack.us/img708/1646/sampletableresult1.jpg
创建测试数据的脚本:
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MyTable]') AND type in (N'U'))
DROP TABLE [dbo].[MyTable]
GO
CREATE TABLE dbo.MyTable
(
col1 INT
, col2 INT
, col3 INT
, col4 INT
, col5 INT
, …Run Code Online (Sandbox Code Playgroud) 这篇文章的SQL Server的tempdb最佳实践提高性能建议我应该拆分tempdb成若干文件等于内核的数量。因此,对于 4 个内核,您将获得 4 个文件。
通过拥有更多数量的文件,您可以增加 SQL Server 可以随时推送到磁盘的物理 I/O 操作的数量。SQL Server 可以下推到磁盘级别的 I/O 越多,数据库运行的速度就越快。使用标准数据库,SQL Server 可以将其需要的大量数据缓存到内存中。由于 tempdb 的高写入特性,数据需要先写入磁盘,然后才能缓存到内存中。
虽然理论上听起来不错,但它真的像一般优化一样好吗?它是否可能仅适用于 IO 非常高的特定系统?
sql-server storage disk-structures sql-server-2008-r2 tempdb
我正在尝试获取当前活动的全局临时表的列表。它们相互碰撞(同名)似乎存在问题。作为“代理”dba,试图解决这里的混乱。
我们将SQL Server PDW 设备用于我们的数据仓库。我们仓库中的一个表是一个复制表,大约有 2000 万行。作为我们 ETL 过程的一部分,我们需要使这个维度的旧记录过期;但是,我们看到更新少量记录 (<100) 需要 1 个多小时才能完成。如果可以的话,这是我想改进的地方。
当然,我想到的一个选择是将这个维度从复制更改为分布式。我的测试表明,它可以解决 ETL 过程耗时较长的问题(从 1.5 小时缩短到 30 秒),但是针对此维度的分布式版本的所有连接都会受到影响,因为连接几乎从不基于相同的分布柱子。当我查看其中一些查询的执行计划时,我通常会看到ShuffleMove或BroadcastMove操作。
所以我对 PDW 大师的问题是:
还有什么可以做的以提高此维度的复制版本中更新记录的性能吗?
同样,迁移到分布式表似乎不是最好的解决方案,因为它会影响数百个已编写的 SQL 查询和其他人开发的报告。
我有大量用于不同级别诊断的脚本化跟踪定义,其中没有一个是按 HostName 过滤的。我今天需要按主机过滤流量,因此:
在 SSMS 中打开文件,没有过滤器的迹象。冲洗,重复,再次相同。假设我正在做一些愚蠢的事情,我查找要使用的值(比它应该更难找到!)并手动添加到我的跟踪定义中,这有效。
EXEC sp_trace_setfilter @TraceId, 8, 0, 6, N'MyHostName'
Run Code Online (Sandbox Code Playgroud)
回来检查为什么我无法从 Profiler 中获得相同的结果。我发现在从 SSMS 编写 2000 年的脚本跟踪时提到这是一个问题,但没有提到 SSMS2005/2008 到 2005/2008 服务器的这种情况。这是 Profiler 中的错误吗?
我总是将 MySQL 或 PostgreSQL 用于我的项目,例如 Web/桌面应用程序。我有几次数据丢失,多亏了旧备份,我总是能正常运行。
但是对于机场最近的一个项目,我必须使用一些永远不会丢失数据的东西,至少在电路通电之前不会丢失数据库。
所以我认为 DB2 应该最适合这种风险较小的任务?任何想法或提示。
提前致谢。
在 Sql Server (2008) 中,是否可以PRIMARY KEY在一组列上有一个而没有同一组列上的任何一个CLUSTERED或NONCLUSTERED索引?
我知道PRIMARY KEY和CLUSTERED INDEXkey 是不同的概念,我们可以在PRIMARY KEY没有CLUSTERED INDEX它的情况下创建(见下文)。
ALTER TABLE dbo.Sample
ADD CONSTRAINT PK_Sample_SeqGUID_Col1 PRIMARY KEY NONCLUSTERED (SeqGUID_Col1)
Run Code Online (Sandbox Code Playgroud)
但我的问题是看看是否可以PRIMARY KEY在没有CLUSTERED或NONCLUSTERED索引的表上创建。
通过 xp_cmdshell 使用 BCP 时出现问题。
我将表数据导出为 .dat 文件,但是当我尝试将文件导入新表时,出现以下错误。SQL Server 服务和我使用的帐户对该驱动器具有完全访问权限。我不知道为什么我仍然有问题。
错误 = [Microsoft][SQL Server Native Client 10.0] 无法打开 BCP 主机数据文件。
这是我正在运行的脚本。
exec master..xp_cmdshell 'BCP database.dbo.tabel OUT d:\tabledata.dat -T -c'
exec master..xp_cmdshell 'BCP database.dbo.tabelnew IN d:\tabledata.dat -T -c'
Run Code Online (Sandbox Code Playgroud) 我成功安装了 sql server 2008 R2 Express,然后意识到我需要获取全文搜索。所以我下载了“高级服务安装包”,但是当我运行它时,“功能选择”部分没有用于全文搜索的选项。请不要告诉我我必须卸载并重新安装?
sql-server ×5
bcp ×1
db2 ×1
index ×1
installation ×1
ms-access ×1
mysql ×1
oracle ×1
order-by ×1
postgresql ×1
profiler ×1
query ×1
storage ×1
tempdb ×1