标签: sql-server-2005

抽象存储结构上的数据库放置

很多时候,我们都听到了同样的事情。关于在哪里放置 OLAP/OLTP 数据库、在哪里放置tempdb、在哪里放置事务日志等的建议。

但是假设您处于存储的物理定义对您来说是个谜的环境中。换句话说,确保您可以看到逻辑驱动器,并且您可以给系统管理员打电话并要求提供更多空间,但您永远不知道什么是不同的物理驱动器(假设在幕后有 SAN 或 NAS)。如果您实际上不知道这一点,那么您如何通过将受到重创的tempdb数据库放在不同的物理驱动器上来遵循最佳实践?

这方面的最佳做法是什么?

sql-server-2005 sql-server-2008 sql-server storage

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

如何设计表格以快速版本化文本数据?

我在这里谈论的版本不是版本控制系统。就像在 SO 中一样,我得到了一些可以进行版本控制的文本数据(将它们与问题进行比较)(在编辑、保存、回滚的意义上)。每次编辑、更新、保存的内容都将根据最终用户的选项保存为新版本。我应该如何为这种任务设计一张桌子?

当前实施

id pk auto increment
content
parentid defaults to 0
version  defaults to 0
Run Code Online (Sandbox Code Playgroud)

样本记录

id     content        parentid        version
1      Hello World        0              0
2      Hello Doggy        1              1
3      Hello Kitty        1              2
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,父 ID 等于现有 ID 的每条记录都将保存在增量版本中(实际上是在服务器端代码中计算的)。显示在 UI 中,如下所示

1.Hello World
    -Hello Doggy(Version1)
    -Hello Kitty(Version2)
Run Code Online (Sandbox Code Playgroud)

其中每个都显示为链接,以便可以进行进一步的编辑。事情像预期的一样没有问题,但我们想改进这一点,我认为最好从桌子设计开始。

sql-server-2005 database-design sql-server version-control

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

从表中恢复意外删除的行

我的客户不小心从测试数据库中删除了一个表的所有记录。此测试数据库位于 SQL Server 2005 Express 中,我们没有备份。

是否可以从事务日志 (.ldf) 文件中恢复已删除的行?如果是,如何?

sql-server-2005 sql-server recovery

6
推荐指数
2
解决办法
5598
查看次数

获取 MS SQL Server 中列的 NULL 统计信息

在 MS SQL Server 2005 中,如何提取给定列的 NULL 分数(或 NULL 计数)的统计信息?

Oracle 和 PostgreSQL 中也有同样的信息,听说 MS SQL 也有统计数据,但不知道在哪里可以找到。谷歌没有多大帮助。

我希望我会听到类似的话

SELECT null_frac FROM pg_stats WHERE tablename='mytab' and attname='mycol';
/* PostgreSQL, stats gathered by ANALYZE */
Run Code Online (Sandbox Code Playgroud)

或者

SELECT nullcnt FROM custom_stats_table WHERE tabname='MYTAB' and colname='MYCOL';
/* Oracle, stats gathered by dbms_stats.get_column_stats */
Run Code Online (Sandbox Code Playgroud)

我不是在问如何自己计算这些值——我知道该怎么做。我需要数千列的这些统计信息,并且在我正在处理的数据库上计算这将花费很长时间。我需要近似值,它们应该在服务器中的某个地方 - 基于成本的优化器无论如何都需要它们。

sql-server-2005 sql-server statistics

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

大型 SQL Server 建议

我正在处理一个相当大的 SQL Server 数据库并遇到一些问题。

数据库很新,我一直在将数据导入表中,这使整个服务器运行得很慢。数据库现在是 15GB,例如在 1 个表中它只有 4 列,但有 1.22 亿行,占用了 3.5GB。另一个表大约有 35 列,300 万行,占用大约 1.5GB。

每当我打开一张大表,或开始在我的 MVC3 应用程序中使用它时,它几乎使服务器瘫痪;内存使用量达到最大值,它开始运行非常缓慢。(服务器规格:奔腾双核 E6300 2.8GHz,2GB RAM,Windows 2008,SQL Server 2005,一张磁盘)。

这确实是我第一次处理如此大量的数据,因此一直在添加索引以尝试加快速度,但是一旦内存达到最大水平,我必须重新启动服务器才能使其正常工作正常的速度。

无论如何,我不觉得 15GB 有那么大——2GB RAM 肯定可以处理吗?我什至还没有完成第一轮数据的添加,所以它会变得更大。

有没有人对如何更好地设置和提高效率有任何建议。所有 PK's 和 FK's 都已经设置好,我已经在大表中添加了索引,看看这是否有帮助,但它最终又开始慢慢变慢了。顺便说一句,在数据库属性中,它显示“可用空间 - 1596.96MB”你如何增加这个数字?

performance sql-server-2005 sql-server

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

基于值的唯一约束/索引

我有一个包含以下列定义的表:

ID (INT, PK)
Name (VarChar)
Active (Bit)
Bunch_of (Other_columns)
Run Code Online (Sandbox Code Playgroud)

问:我想有一个约束Name/Active,使得我们只能有1条记录与给定的NameActiveActive= 1),但我们也能有同样的多条记录NameInactiveActive= 0)。这可能吗?

我已经尝试了普通的 Unique 约束,但它们将数据集限制为仅允许 1 条记录的给定NameInactive.

index sql-server-2005 sql-server constraint

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

MS SQL Server - 检查点进程卡在 SLEEP_BPOOL_FLUSH

我们似乎遇到了一个莫名其妙的问题。检查点进程卡在 SLEEP_BPOOL_FLUSH 状态,并没有真正减少日志文件中的使用。

这在以前似乎从未发生过。

我知道 SLEEP_BPOOL_FLUSH 是磁盘子系统繁忙时对 CHECKPOINT 进程的正常等待。实际上,我们一直有一个非常繁忙的磁盘子系统,所以我不明白为什么这会成为一个问题。

(如果您手动运行检查点命令,同样的结果...您的用户进程在 SLEEP_BPOOL_FLUSH 中等待)。

我们可以做些什么来推动检查点发生?是否可以调整检查点的参数以免发生这种情况?

(SQL Server 2005,RAID 子系统,简单恢复模型)

sql-server-2005 transaction-log checkpoint

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

SQL Server 数据库:从 2008 年迁移到 2005 年 - 加密过程问题

我通常可以使用生成脚本/ DTS 来移动数据和表等。但是,其中一个数据库有大量的加密程序,我无法通过脚本来移动它们。

我也没有旧的 2005 年数据库备份。

我没有手动恢复解密程序。

有什么办法可以复制/移动它们吗?

sql-server-2005 sql-server-2008 stored-procedures

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

在具有许多非常相似的起始值的 VARCHAR 列上建立索引是否会导致性能不佳

我们似乎在使用索引的查询上有非常不寻常的糟糕性能。例如表格看起来像

  • PK BIGINT
  • ID VARCHAR(50)
  • 第 1 列
  • Col2
  • 等等

所以我们需要在数据库中插入一行,然后在 ID 上查找。但是第三方拥有的 ID 和我们有 PK。我们需要拿回PK。但是这些 ID 中很大一部分具有非常相似的起始值。例如

  • "//45-423484834893457"
  • "//45-573459834589345"
  • "//45-345345345345345

我不确定 SQL Server 是如何遍历 BTree 的,如果它从最左边的位置开始对值进行哈希处理或进行字符串比较。

在查询这些值时,具有非常大范围的非常相似的值(至少前 4 个字符是相同的)是否会导致索引性能不佳?

更新:

抱歉,查找查询是

SELECT PK_Column FROM table WHERE ID = @ID
Run Code Online (Sandbox Code Playgroud)

标记要求:

SQL Server parse and compile time: 
   CPU time = 0 ms, elapsed time = 0 ms.

 SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 0 ms.
SQL Server parse and compile time: 
   CPU time = …
Run Code Online (Sandbox Code Playgroud)

index sql-server-2005 sql-server-2008 sql-server sql-server-2008-r2

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

SQL Server 2005:全文搜索空间要求

有没有办法计算全文搜索目录所需的物理驱动器空间?空间很便宜,但我想知道我在做什么。

我正在查看一个包含大约 200 篇长度不等的文章的表格。我想索引标题字段和文章的正文。

更新: 我有点想预测未来。例如200篇文章,标题是varchar(500),文章正文是varchar(max)。那么,在不创建索引的情况下,是否可以估算全文搜索目录的大小?

sql-server-2005 sql-server full-text-search disk-space

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