Questions tagged «sql-server»

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

3
将事务日志文件放在单独的驱动器上是否会对性能产生好处?
有许多博客文章和最佳实践文章赞扬将SQL Server数据文件放在一个硬盘驱动器上并将事务日志放在另一个硬盘驱动器上的优点。给出的原因是,数据库文件将经历随机读写,而事务日志将仅具有顺序写。 但是,如果您有数百个数据库怎么办?将数百个事务日志文件放在单独的磁盘上,是否会对性能产生真正的好处?如果要写入多个事务日志,那么我认为事务日志的写入将与数据库写入的一样随机。


3
如何识别表格中的列顺序
我需要按表定义顺序列出表中的列: select * from syscolumns where id = object_id('MyTable') --order by colid 通过检查syscolumns表格,两列看起来很相关:colid和colorder。关于syscolumns的MSDN文章说: colid | smallint | Column or parameter ID. colorder | smallint | Identified for informational purposes only. | Not supported. Future compatibility is not guaranteed. 我试着跑 select * from syscolumns where colorder <> colid 它不产生任何行,这使我认为大多数时间这些列具有相同的值。 看起来最安全的选择是使用colid。但是,我很想知道:这两列之间是否有区别,如果有区别,那有什么区别? 同样,MSDN文章(未确认)colid反映了表定义的顺序。尽管可以合理地假设情况确实如此,但如果您确定情况确实如此,您能告诉我吗?


2
是否有可以帮助SQL Server维护任务的PowerShell脚本集合?
我一直在研究PowerShell,并且一直(慢慢地)将其纳入我的日常DBA任务中。 到目前为止,我已经看到了许多用于许多不同管理活动的断开连接的PowerShell脚本。 我想知道的是,是否存在人们通常要去的官方(或可识别的)PowerShell脚本集合或存储库,以获取用于常见DBA活动的SQL Server PowerShell脚本(例如Ola Hallengren的T-SQL脚本)。

1
添加SPARSE使表更大
我有一个通用的日志表,大约有500万行。 有一个“强类型”字段存储事件类型,还有一堆“弱类型”列包含与事件相关的数据。也就是说,那些“错误输入”列的含义取决于事件的类型。 这些列定义为: USER_CHAR1 nvarchar(150) null, USER_CHAR2 nvarchar(150) null, USER_CHAR3 nvarchar(150) null, USER_CHAR4 nvarchar(150) null, USER_CHAR5 nvarchar(150) null, USER_INTEGER1 int null, USER_INTEGER2 int null, USER_INTEGER3 int null, USER_INTEGER4 int null, USER_INTEGER5 int null, USER_FLAG1 bit null, USER_FLAG2 bit null, USER_FLAG3 bit null, USER_FLAG4 bit null, USER_FLAG5 bit null, USER_FLOAT1 float …



5
过度使用/正确使用模式?
在问了Stackoverflow 这个问题之后,我想知道我在哪里做的是正确/最佳实践。 基本上,我创建的每个对象都将进入一个架构,该架构名称反映了用法。例如,我有模式Audit和Admin(以及其他模式)。 反过来,这也不会留下任何对象dbo。这个可以吗?还有什么我需要做的吗?

4
Windows用户创建表时,SQL 2008 R2创建用户/架构
我们添加了服务器登录名和数据库用户,该用户使用以下脚本将Windows组映射到SQL 2008 R2实例,并更改了名称以实现匿名: USE master go CREATE LOGIN [DOMAIN\AppUsers] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english] go USE AppDb go CREATE USER [DOMAIN\AppUsers] FOR LOGIN [DOMAIN\AppUsers] go EXEC sp_addrolemember N'db_owner', N'DOMAIN\AppUsers' go 当DOMAIN \ User1帐户登录到应用程序时,User1可以在dbo模式中查询表,因为User1是DOMAIN \ AppUsers的成员,但是此应用程序也允许用户创建表。在不指定架构的情况下创建这些表时,SQL Server会执行以下操作: 在AppDb中创建一个“ DOMAIN \ User1”用户,该用户使用该实例的SSMS \ Security \ Logins中未列出的“ DOMAIN \ User1”登录名。 在AppDb中创建一个“ DOMAIN \ …

2
如何使用UUID的默认值创建唯一列
我有一个供内部使用的键列,它只是一个递增的整数,但我想有第二个唯一列,它是UUID,但是我不知道如何为默认值调用一个函数(因此,SQL服务器正在创建UUID,而不是Java),是否有任何文档可以为此建议我?

3
如何截断SQL Server 2008数据库中的事务日志?
如何截断SQL Server 2008数据库中的事务日志? 可能的最佳方法是什么? 我从一个博客尝试了如下操作: 1)从设置数据库到简单恢复,缩小文件,然后再次设置为完全恢复,实际上您正在丢失宝贵的日志数据,并且将无法还原时间点。不仅如此,您也将无法使用后续的日志文件。 2)缩小数据库文件或数据库会增加碎片。 您可以做很多事情。首先,使用以下命令开始进行正确的日志备份,而不是将其截断并经常丢失。 BACKUP LOG [TestDb] TO DISK = N'C:\Backup\TestDb.bak' GO 删除收缩文件的代码。如果您要进行适当的日志备份,则您的日志文件通常(通常,同样会排除特殊情况)不会变得很大。

3
SQL Server-非阻塞选择语句的隔离级别是多少?
我有一个运行很长时间的事务(称为T1),该事务在SQL Server 2008 R2中的表上执行一些删除,更新和插入操作。同时,另一个进程会定期运行该表中的select语句。 在默认隔离设置下(我认为是READ COMMITTED吗?),T1会阻止所有select语句运行,直到事务提交或回滚为止。 我希望看到的是即使事务正在进行中,select语句也可以在一致的数据上起作用。我相信SNAPSHOT隔离可以提供帮助,但是不确定我的方向是否正确。这是此应用程序的最佳隔离级别吗? 其次,我对调用select语句的过程没有任何控制,但对调用T1的.NET应用程序有控制。在select语句和T1上是否都需要进行任何隔离级别更改,或者仅将T1标记为具有不同的隔离级别就足够了吗?

3
如何释放SQL Server内存?
我在本地计算机上安装了SQL Server沙箱。我已将SQL Server实例可以使用的内存设置为1000 mb。运行密集型操作时,内存使用量会上升到1000 mb。操作结束后,SQL Server仍在保留内存。如何释放此内存保留?

2
在存储过程中临时运行时,代码会创建不同的计划
我有一条delete语句,在存储过程中运行时使用了错误的计划,但是在临时运行时选择了更好的计划。 我已经为查询使用的表重建了所有索引,并删除了所有缓存。优化器仍然为存储过程选择了错误的计划。 我想知道为什么优化器对存储过程使用的是与临时SQL不同的执行计划。 更新:我猜想它毕竟一定是参数-当我运行带有硬编码变量的临时代码时,我可以获得具有正确值的“坏”计划(这是一个日期,一个岁的值)似乎会产生“好的”计划)。现在继续尝试通过使用查询提示在proc上强制执行“良好”计划。 解决方案:我最终使用OPTIMIZE FOR UNKNOWN提示获得了想要的计划。

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.