Questions tagged «sql-server-2008»

SQL Server 2008(主要版本10.00.xxxx)。请同时用sql-server标记。

4
删除所有(1200万)记录后,SQL Server“空表”运行缓慢吗?
我有一个大约有150列的SQL Server 2008实例。我以前在该表中填充了大约1200万个条目,但是此后清除了该表以准备新的数据集。 然而,命令,一旦在空表上立即跑如count(*)和select top 1000在SQL Management Studio现在采取亿万运行。 SELECT COUNT(*) FROM TABLE_NAME 花了11分钟以上的时间来返回0,SELECT TOP 1000花了将近10分钟的时间来返回一个空表。 我还注意到硬盘上的可用空间实际上已经消失了(从大约100G减少到20G)。之间发生的唯一事情是我运行了一个查询: DELETE FROM TABLE_NAME 到底是怎么回事?!?

4
如何更改SQL Server排序规则
如何更改整个服务器和特定数据库的SQL Server 2008 R2 Express默认排序规则? 有没有办法使用SQL Server Management Studio的可视界面来做到这一点?在“服务器属性”窗口(以及相应的“数据库属性”窗口中),此属性不可用于编辑。

2
如何查找导致tempdb增长的SQL语句?
服务器(SQL Server 2008)的tempdb每月增加几次,达到500GB +。是否有可能找出导致该问题的SQL语句?这个问题通常不是由造成create table #temp...; insert into #temp...或select ... into #temp...而又复杂的连接。 某些tempdb文件的Initial Size每次也会自动设置为更大的值。怎么预防呢? 有时,缓存的计划会阻止调整大小/缩小文件。如何找到哪个持有tempdb?

7
长列如何影响性能和磁盘使用率?
在我们当前的项目中,它经常发生,我们需要将列扩展几个字符。从varchar(20)到varchar(30)等等。 实际上,这到底有多重要?优化效果如何?正常的“输入”字段只允许100或200甚至500个字符的影响是什么?一封电子邮件只能包含320个字符,所以好吧-那里有一个很好的限制。但是,如果将其设置为200,我会得到什么,因为我希望电子邮件地址不会超过此数目。 通常,我们的表的行数不超过100.000,最多不超过20或30列。 我们现在使用SQL Server 2008,但是了解不同的DB如何处理此问题将很有趣。 如果影响非常小-就像我期望的那样,这将有助于获得一些好的论据(通过链接进行备份?)来说服我的DBA,这种长距离偏执并不是真正必要的。 如果是这样,我在这里学习:-)

3
Windows 2008R2上SQL 2008R2的建议页面文件大小
此Microsoft文章- 如何确定64位版本的Windows Server 2008和/或Windows 2008 R2的适当页面文件大小,提供了计算64位Windows 2008和Windows 2008R2的页面文件大小的指南。毫无疑问,这对于通用服务器来说效果很好。我想知道针对在Windows 2008 / R2 64位上运行的SQL Server 2008R2的指导是什么? 我假设我们希望内存中的数据少到页面文件,否则SQL可能两次在磁盘上打数据。SQL Server甚至允许内存中的数据访问页面文件吗?我已经通过SQL Server 2008 R2联机丛书寻求指导,但是还没有提到页面文件的使用。 这是一个潜在的使用场景:给具有64GB RAM的物理服务器,整个64GB RAM是否需要页面文件?我们是否应该为96GB的页面文件做好准备?对于单个文件,这似乎有点过分。我知道传统的看法是Windows会将页面文件耦合到内存,以尝试在RAM上更容易地换出应用程序,但这是真的吗?小于64GB的页面文件会在此处影响性能吗?

6
当不存在sysadmin帐户时,如何在SQL Server 2008中向用户添加sysadmin
此问题是从Stack Overflow 迁移而来的,因为可以在Database Administrators Stack Exchange上回答。 迁移 7年前。 我有一个正在运行的SQL Server 2008实例。不幸的是,在测试过程中,我取消了登录名的sysadmin权限,但现在无法读取(因为我没有sysadmin权限)。 除SA外,该实例没有其他sysadmin帐户。 我仅针对Windows身份验证进行了设置,因此将注册表中的LoginMode修改为2,以便可以使用Sql身份验证以SA身份登录。确实确实将登录模式设置为“混合”,但是默认情况下SA用户被禁用,由于我没有sysadmin权限,因此我无法重新启用它。 如何启用SA登录,以便进入系统管理员并将其重新分配给我的普通帐户?是否也有一个注册表设置,或者它存储在master数据库中?

2
更改表检查约束
在SQL Server的对象资源管理器中,选择并编写外键约束脚本时,将生成以下代码。 USE [MyTestDatabase] GO ALTER TABLE [dbo].[T2] WITH NOCHECK ADD CONSTRAINT [FK_T2_T1] FOREIGN KEY([T1ID]) REFERENCES [dbo].[T1] ([T1ID]) GO ALTER TABLE [dbo].[T2] CHECK CONSTRAINT [FK_T2_T1] GO 最后一条语句“ ALTER TABLE CHECK CONSTRAINT”的目的是什么?是否运行它似乎并不重要。它不会对现有的不良数据失败,也不会更改对新数据强制实施约束的情况。 谢谢!


3
持久计算列上的索引需要键查找才能获取计算表达式中的列
此问题是从Stack Overflow 迁移而来的,因为可以在Database Administrators Stack Exchange上回答。 迁移 6年前。 我在表上有一个持久的计算列,该表只是由串联的列组成,例如 CREATE TABLE dbo.T ( ID INT IDENTITY(1, 1) NOT NULL CONSTRAINT PK_T_ID PRIMARY KEY, A VARCHAR(20) NOT NULL, B VARCHAR(20) NOT NULL, C VARCHAR(20) NOT NULL, D DATE NULL, E VARCHAR(20) NULL, Comp AS A + '-' + B + '-' …

2
'CONCAT'不是公认的内置函数名称
一位客户报告说他们正在SQL Server 2012上运行,我们在最终交付之前交付了一些测试查询以进行测试,但是: 'CONCAT'不是公认的内置函数名称。 我知道这CONCAT()是SQL Server 2012中引入的一个新的内置函数,它很好,但是我被要求回退我的更改以使此2008R2兼容,理由是“执行查询的用户可能无法具有执行Transact-SQL权限。” 因此,我只是想证明我的观点,即客户端最有可能在DEV中安装的SQL Server版本与在PROD中安装的SQL Server版本不同。 我找不到有关专门拒绝SELECT/EXECUTE内置标量值函数的权限的任何信息,但是是否可以,如果这样,用户仍然会收到相同的错误文本吗?


1
在SQL Server中“无联接谓词”到底是什么意思?
MSDN“ 缺少连接谓词事件类 ”说“ 表明正在执行的查询没有连接谓词 ”。 但是不幸的是,这似乎并不那么容易。 例如,非常简单的情况: create table #temp1(i int); create table #temp2(i int); Select * from #temp1, #temp2 option (recompile); 表中没有数据,也没有警告,尽管它显然没有连接谓词。 如果我看一下SQL Server 2005的文档(相同的链接,只是其他服务器版本),则会有额外的一句话:“ 仅当连接的两面都返回多行时,才会产生此事件。 ”在以前的情况下具有完美的感觉。没有数据,因此双方都返回0行且没有警告。插入行,得到警告。嗯不错。 但是对于下一个令人困惑的情况,我在两个表中插入了相同的值: Insert into #temp1 (i) values (1) Insert into #temp1 (i) values (1) Insert into #temp2 (i) values (1) Insert into #temp2 …

1
向用户授予SQL Server SHOWPLAN权限有任何风险吗?
此问题是从Stack Overflow 迁移而来的,因为可以在Database Administrators Stack Exchange上回答。 迁移 7年前。 我正在对大型SQL Server 2008数据库进行性能调整,并且IT小组不愿意授予SHOWPLAN权限。过去,“显示执行计划”一直是了解单个查询和过程的性能的最有效方法。 授予此许可有哪些固有风险?对数据库的开发副本进行此限制是否有合理的理由? 注意:该SQL IT组在一个SQL Server实例下有200多个数据库。谢谢。 答:我认为缺乏响应是指除以下所述之外,没有重大的安全风险。基本上,将其限制在开发数据库上会适得其反。 如果有人想出更好的答案,我将进行更新。感谢您的意见!

2
如何更改SQL Server Express 2008的实例名称?
此问题是从“服务器故障” 迁移而来的,因为可以在数据库管理员堆栈交换中回答。 迁移 7年前。 在开发计算机上,我已经安装了SQL Server Express 2008,但是它的实例名称为.\SQLEXPRESS。我希望它是默认实例。我很确定我在安装程序中选择了“默认实例”选项,但是显然它没有用。现在有什么办法可以更改实例名称? 添加: 看来这是安装程序中的已知错误。当PCU 1(PubliC Update)问世时,该问题将得到解决,但尚无法确定何时会发生。同时,有两种解决方法: 安装时,选择“命名实例”选项,然后输入MSSQLSERVER。 安装命名实例,然后安装另一个实例,这一次“默认实例”选项将起作用。 但是,问题仍然存在:是否可以在不重新安装实例的情况下重命名实例?因为安装过程很慢。XD


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.