小编Tho*_*ger的帖子

为什么我们不应该允许 NULL?

我记得读过这篇关于数据库设计的文章,我还记得它说你应该有 NOT NULL 的字段属性。我不记得为什么会这样。

我似乎只能想到,作为应用程序开发人员,您不必测试 NULL可能不存在的数据值(例如,字符串的空字符串)。

但是对于日期、日期时间和时间 (SQL Server 2008),您会怎么做?你必须使用一些历史或触底的日期。

对此有何想法?

null database-design

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

是否应该在编写应用程序代码之前设计数据库?

设计数据库的最简单和最有效的方法是什么?从我的角度来看,应用程序的数据存储设计有几个选项:

  1. 在编写任何应用程序代码之前,尽可能最好地设计数据库。这为您提供了使用基本数据结构的优势。在我看来,这样做的缺点是您将有很多更改作为应用程序细节,这些更改会影响整个应用程序开发周期中数据更改的内容/位置/方式。
  2. 在应用程序实现时设计数据库。当您在编写应用程序时需要一些数据库对象时,您可以与应用程序并行(按时间顺序)开发数据库。在我看来,优点是对数据库结构的更改较少。缺点是应用程序代码和数据库开发之间的时间和开发工作的划分。

根据您的经验,您认为最有成效和最有效的方法是什么?

database-design

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

数据库主体在数据库中拥有一个架构,并且无法删除消息

我试图从数据库中删除一个主体,但不能,因为它拥有一个架构。但是,当我去编辑用户时,取消选中架构的框是蓝色的并且无法移除。如何从这些架构中删除主体?

sql-server-2008 sql-server

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

SELECT INTO 表查询的 WHERE 1=2 有什么意义

如果我们想从 SQL Server 中的现有表创建一个新表,我们可以执行以下操作

SELECT * into Table2
from Table1
WHERE 1=2
Run Code Online (Sandbox Code Playgroud)

where 子句的重点是什么?我在没有 where 子句的情况下尝试了它,它运行良好。我已经在互联网上的许多示例中看​​到了这个 where 子句,但不是需要它的原因。

sql-server

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

为什么数据库不自动创建自己的索引?

我原以为数据库会对它们经常遇到的事情有足够的了解,并且能够对它们所面临的需求做出响应,以便它们可以决定向高度请求的数据添加索引。

rdbms index

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

IntelliSense 不工作,但已启用

这个问题确实被证明是一个棘手的问题(而且很烦人)。

在 SQL Server Management Studio 2008 中,直到几天前,我的 IntelliSense 运行良好。然后突然就停了下来。在工具栏菜单上启用的图标,在工具 -> 选项 -> 文本编辑器 -> T-SQL -> IntelliSense 下,它表示它已在那里启用。

我曾尝试使用 Ctrl-Shft-R 刷新 IntelliSense 缓存,但这也不起作用。

任何想法我的智能感知发生了什么以及我需要做什么才能恢复它?

sql-server-2008 sql-server intellisense

32
推荐指数
5
解决办法
13万
查看次数

从未知来源恢复备份的安全隐患?

场景:您收到了一个数据库备份,并被告知将其还原到服务器(该服务器已经托管了其他数据库),但没有提供有关备份包含的内容或源是否应受信任的有用信息。

问题 1:恢复很可能是恶意的备份有什么潜在影响?

问题 2:您可以采取哪些措施来保护您的服务器/其他数据库中的数据免受恢复潜在恶意备份的影响?RESTORE VERIFYONLY似乎是一个很好的第一步。最终的答案可能是“在无法访问外部世界的沙箱 VM 中恢复数据库”,但让我们假设该选项不在表中。在这种情况下还应该做什么?

security sql-server backup

32
推荐指数
6
解决办法
2484
查看次数

查询调优应该是主动的还是被动的?

作为一名软件开发人员和一名有抱负的 DBA,我在设计 SQL Server 数据库时尝试结合最佳实践(我的软件 99% 的时间位于 SQL Server 之上)。我在开发之前和开发过程中做出最好的设计。

但是,就像任何其他软件开发人员一样,存在需要更改/创建的数据库对象的附加功能、错误和需求更改。

我的问题是,查询优化应该是主动的还是被动的?换句话说,在一些大量的代码/数据库修改几周后,我是否应该留出一天来检查查询性能并根据它进行调整?即使它似乎运行正常

或者我应该知道低于平均水平的性能应该是数据库检查并回到众所周知的黑板?

查询调优可能会占用大量时间,并且取决于初始数据库设计,它可能是最小的好处。我对公认的作案手法感到好奇。

performance query performance-testing

23
推荐指数
5
解决办法
1224
查看次数

查找最近在数据库上执行的所有查询

[我是初级 T-SQL 程序员]
[..希望我在正确的堆栈交换站点上]

我想获得我执行的所有查询的列表(至少,我从早上开始执行的那些查询)。我需要报告查询的执行时间。

在线搜索并没有给我带来太多有用的信息。我在网上找到的唯一一个看起来很接近的查询是

SELECT
    deqs.last_execution_time AS [Time], 
    dest.TEXT AS [Query]
 FROM 
    sys.dm_exec_query_stats AS deqs
    CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest
ORDER BY 
    deqs.last_execution_time DESC
Run Code Online (Sandbox Code Playgroud)

这个查询返回了一些奇怪的结果(其中大部分是一堆 sproc)。此外,所有这些结果都显示了从今天下午开始执行的查询(我需要从早上开始查询)。

我在之前的问题中找不到任何东西(如果已经问过类似的问题,请指点我)。

我看到了一些关于 SQL Profiler 的建议,但我想 Profiler 只有在我已经开始跟踪时才会帮助我(如果我错了,请纠正我)。

有人可以建议我如何获取从早上开始在数据库上执行的所有查询的列表(包括查询执行时间)。

[如果我也能以某种方式获得执行查询的用户的用户名,这将是有帮助的(不是必需的)]

sql-server ssms sql-server-2008-r2

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

获取每个数据库的上次完整备份和事务日志备份

如何使用系统表“backupset”和相关备份表编写脚本或查询,以显示每个生产服务器上每个数据库的上次完整备份和上次日志备份。

sql-server

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