Questions tagged «sql-server»

所有版本的Microsoft SQL Server(非MySQL)。还请添加特定于版本的标记,例如sql-server-2016,因为它通常与问题相关。

2
NUMERIC和DECIMAL之间有什么区别吗?
我知道SQL Server中的NUMERIC和DECIMAL数据类型是相同的:创建它们的语法是相同的,可以在其中存储的值的范围是相同的,等等。 但是,MSDN文档将两者之间的关系描述如下: 数字在功能上等同于十进制。 通常,当我看到限定词“在功能上等效”时,这意味着这两件事并不完全相同,但是它们是两种不同的类型,它们与外界无法区分。 这是真的吗?NUMERIC和DECIMAL之间是否有区别,只是外部观察者的行为相同?还是它们实际上是等效的,例如NUMERIC只是DECIMAL的传统同义词吗?
47 sql-server 

4
群集,事务复制与可用性组
假设您需要确保依赖于SQL Server 2012的应用程序全天候可用,因为它的数据库后端即使一台服务器计算机出现故障也是如此。 作为开发人员而不是DBA,我努力了解何时使用哪种方案进行故障转移/高可用性: Windows故障转移群集中的两台(或更多)服务器,SQL Server作为群集实例 两个(或多个)SQL Server实例与事务复制保持最新 SQL Server可用性组中的两个(或更多)SQL Server,以同步提交模式配置 这些方案中的每个方案都适合哪种工作负载,这些方案可以处理哪种故障/停机?它们是否具有可比性/可互换性?

2
兼容性级别80的实际行为是什么?
有人可以让我对兼容模式功能有更好的了解吗?它的行为与我预期的不同。 据我了解兼容模式,这是有关各种版本的SQL Server之间的某些语言结构的可用性和支持。 它不会影响数据库引擎版本的内部工作。它将尝试阻止使用早期版本中尚不可用的功能和构造。 我刚刚在SQL Server 2008 R2中创建了一个兼容级别为80的新数据库。用一个int列创建一个表,并用几行填充它。 然后执行带有row_number()函数的选择语句。 我的想法是,由于row_number函数仅在2005年才引入,所以这会在compat 80模式下引发错误。 但是令我惊讶的是,这个方法很好。然后,可以肯定的是,仅当您“保存一些东西”时才评估兼容规则。因此,我为row_number语句创建了一个存储的proc。 存储的proc创建很好,我可以完美地执行它并获得结果。 有人可以帮我更好地了解兼容模式的工作方式吗?我的理解显然是有缺陷的。


8
如何快速缩小所有数据库的所有文件?
在SQL Server(在本例中为2008)中,如何快速缩小实例上所有数据库的所有文件(日志和数据)?我可以遍历SSMS,然后右键单击每个,然后选择“任务”->“收缩”,但是我正在寻找更快的东西。 我编写了一些“创建数据库”脚本的脚本,但忘记了它们具有默认值的膨胀大小,并且在此项目中不需要为这些文件保留太多的空间。

2
到目前为止的铸造是值得肯定的,但这是一个好主意吗?
在SQL Server 2008中,添加了日期数据类型。 将datetime列强制转换为date可精简并且可以在datetime列上使用索引。 select * from T where cast(DateTimeCol as date) = '20130101'; 您还有另一个选择是使用范围。 select * from T where DateTimeCol >= '20130101' and DateTimeCol < '20130102' 这些查询是否同样好,还是应该优先于另一个?
47 sql-server 

6
.bak文件在SSMS中的任何目录中都不可见
我今天有一个其他人创建的.bak文件,是通过SSMS 2008 R2手动创建的。我正在尝试手动还原数据库,但是不幸的是,当我浏览该文件时,该文件没有出现。 我可以编写恢复过程的脚本,但是我以前已经看到过此问题,并且不确定是什么原因导致.bak不出现。

6
移动数据库(备份,还原)后,我必须重新添加用户
我有时使用SQL Server Management Studio中的数据库备份和还原功能将数据库(SQL Express 2012)从开发计算机移至服务器,反之亦然。 每当执行此操作时,目标计算机上的应用程序都无法访问数据库,直到我从数据库用户(数据库,安全性,SQL Server Management Studio中的用户)删除它们使用的用户“ george”,并将其重新添加为安全性,登录名,地理/属性,用户映射下的所有者。 有一个更好的方法吗?似乎有点令人费解。

2
数据库“所有者”的目的是什么?
今天,在对服务代理问题进行故障排除时,我发现数据库所有者是离开公司的一名员工的Windows登录名。他的登录信息已被删除,因此查询通知失败。 最好的解决方法是让“ sa”成为数据库所有者。我们对其进行了更改,从而清除了队列。 我的(非常基本的)问题:数据库所有者是什么,数据库的目的是什么?


4
SQL Server命令在运行性能比较之前清除缓存
比较两个不同查询的执行时间时,重要的是清除缓存以确保第一个查询的执行不会改变第二个查询的性能。 在Google搜索中,我可以找到以下命令: DBCC FREESYSTEMCACHE DBCC FREESESSIONCACHE DBCC FREEPROCCACHE 实际上,在执行几次查询之后,我的查询比以前花费了更实际的时间。但是,我不确定这是推荐的技术。 最佳做法是什么?

3
过多的排序内存授予
为什么这个简单的查询被授予这么多的内存? -- Demo table CREATE TABLE dbo.Test ( TID integer IDENTITY NOT NULL, FilterMe integer NOT NULL, SortMe integer NOT NULL, Unused nvarchar(max) NULL, CONSTRAINT PK_dbo_Test_TID PRIMARY KEY CLUSTERED (TID) ); GO -- 100,000 example rows INSERT dbo.Test WITH (TABLOCKX) (FilterMe, SortMe) SELECT TOP (100 * 1000) CHECKSUM(NEWID()) % 1000, …

5
我无法通过IP地址连接到服务器SQL数据库
我已经安装了运行Windows Server 2008的服务器,并安装了SQL Server 2008 Express。 我可以通过连接到计算机的SQL Server Express数据库MACHINENAME/SQLEXPRESS。 但是,当我们使用IP地址通过任何软件或脚本进行连接时,将不允许连接。 我努力了: 关闭防火墙。 允许SQL数据库的远程连接。 在“ SQL配置”中启用TCP / IP。 当我们尝试通过软件“ SQL Server Management Studio”进行连接时,会收到以下消息: 错误信息: 建立与服务器的连接时发生错误。连接到SQL Server 2005时,此故障可能是由于以下事实导致的:在默认设置下,SQL Server不允许远程连接。(提供程序:TCP提供程序,错误:0-无法建立连接,因为目标计算机主动拒绝了它。)(Microsoft SQL Server,错误:10061) 已成功与服务器建立连接,但是在登录过程中发生了错误。(提供程序:TCP提供程序,错误:0-主机中的软件中止了已建立的连接。)(Microsoft SQL Server,错误:10053) 您能否在空闲时间让我知道,以便我们看看,因为我似乎已经知道在哪里,所以我根据UK Fast发送给我的一些信息修改了详细信息,但他们说“不在支持范围内” ,因此他们无济于事。 我期待着您的回音。


5
SQL Server CASE语句是否评估所有条件或在第一个TRUE条件下退出?
SQL Server(特别是2008或2012)CASE语句会评估所有WHEN条件,还是在找到WHEN评估结果为true 的子句后退出?如果确实要经历整个条件集,这是否意味着最后一个评估为true的条件会覆盖第一个评估为true的条件?例如: SELECT CASE WHEN 1+1 = 2 THEN'YES' WHEN 1+1 = 3 THEN 'NO' WHEN 1+1 = 2 THEN 'NO' END 即使最后一个条件将其评估为“否”,结果仍为“是”。似乎一旦找到第一个TRUE条件就退出。有人可以确认是否是这种情况。
44 sql-server  t-sql  case 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.