在 SQL Server(在本例中为 2008)中,如何快速缩小实例上所有数据库的所有文件,包括日志和数据?我可以通过 SSMS 并右键单击每个并选择任务 -> 收缩,但我正在寻找更快的东西。
我编写了一些“创建数据库”脚本,但忘记了它们的默认值已经膨胀,并且不需要为该项目中的这些文件保留太多空间。
我们需要将 SELECT 查询结果写入一个 csv 文件。如何在 SQL Server 2008 r2 中使用 T-SQL 来完成?我知道它可以在 SSIS 中完成,但由于某些原因,我们没有这个选项。
我尝试使用下面文章中建议的 proc,但是当我运行该 proc 时,SQL 抱怨无法运行在此 proc 中调用的 sys.sp_OACreate 和 sys.sp_OADestroy。
您知道我们如何打开这些组件或知道使用 T-SQL 写入文件的更好方法吗?
提前致谢。
我的本地开发服务器在中东,但我的生产服务器在英国。
我需要在他们的时区向用户显示日期。例如,如果用户在沙特阿拉伯,那么我需要根据沙特阿拉伯格式显示时间。
我应该创建一个名为 TimeZone 的新数据库表并以 UTC 格式保存时间吗?
我有一个数据库,我试图通过运行此 T-SQL 一次对所有表进行碎片整理:
SELECT
'ALTER INDEX all ON ' + name + ' REORGANIZE;' + CHAR(10) +
'ALTER INDEX all ON ' + name + ' REBUILD;'
FROM sys.tables
Run Code Online (Sandbox Code Playgroud)
然后将输出复制并粘贴到新的查询窗口并运行它。我没有错误,但我仍然有碎片。我也尝试分别运行这两个命令,但仍然存在碎片。注意:REORGANIZE Aaron已经让我知道这是不必要的,并且我知道我可以使用动态 sql 来自动执行此操作。
我运行这个以确定我仍然有碎片:
SELECT * FROM
sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL , NULL, NULL)
WHERE avg_fragmentation_in_percent > 0
Run Code Online (Sandbox Code Playgroud)
我得到了:
database_id object_id index_id partition_number index_type_desc alloc_unit_type_desc index_depth index_level avg_fragmentation_in_percent fragment_count avg_fragment_size_in_pages page_count avg_page_space_used_in_percent record_count ghost_record_count version_ghost_record_count min_record_size_in_bytes max_record_size_in_bytes avg_record_size_in_bytes forwarded_record_count compressed_page_count
85 171147655 1 1 CLUSTERED INDEX IN_ROW_DATA 2 …Run Code Online (Sandbox Code Playgroud) 我试图从数据库中删除一个主体,但不能,因为它拥有一个架构。但是,当我去编辑用户时,取消选中架构的框是蓝色的并且无法移除。如何从这些架构中删除主体?
我正在使用我从远程 Pg 数据库写入 SELECT 的代码自动生成一些查询,并插入到本地 SQL Server 数据库中。但是,其中之一正在生成此错误:
[Microsoft][ODBC SQL Server 驱动程序][SQL Server]字符串或二进制数据将被截断。(SQL-22001) [状态是 22001 现在是 01000]
[Microsoft][ODBC SQL Server Driver][SQL Server]语句已终止。(SQL-01000) 在 .\insert.pl 第 106 行。
我如何找出哪个列产生了该错误并且缺少输入的长度?有没有办法做到这一点而不用蛮力猜测所有varchar?
我想在我的内部应用程序中使用集成安全性,这些应用程序都在一个域中。不幸的是,我一直无法让它正常工作。我想在 SQL Server 中为整个 Exchange (Active Directory) 组分配一个角色,以便对某些表进行读/写访问。这样我就不必在有人被雇用时创建操作员或在有人被解雇时删除操作员。这可能吗?我将采取哪些步骤来做到这一点?
有没有办法将 SQL Server 2012 数据库备份还原到 SQL Server 2008?
我试图附加文件,它不起作用。
所以今天早上我们有一个长时间运行的 proc 导致问题(30 秒 + 运行时间)。我们决定检查参数嗅探是否是罪魁祸首。因此,我们重写了 proc 并将传入的参数设置为变量,以阻止参数嗅探。一种尝试过的/真实的方法。Bam,查询时间得到改善(不到 1 秒)。在查看查询计划时,在原始未使用的索引中发现了改进。
为了验证我们没有得到误报,我们对原始 proc 进行了 dbcc freeproccache 并重新运行以查看改进的结果是否相同。但是,令我们惊讶的是,原来的 proc 仍然运行缓慢。我们再次尝试使用 WITH RECOMPILE,但仍然很慢(我们尝试在对 proc 的调用以及在 proc 内部进行重新编译)。我们甚至重新启动了服务器(显然是开发箱)。
所以,我的问题是……当我们在空计划缓存上得到相同的慢查询时,参数嗅探怎么会受到指责……不应该有任何参数嗅探???
我们是否会受到与计划缓存无关的表统计信息的影响。如果是这样,为什么将传入参数设置为变量会有所帮助??
在进一步的测试中,我们还发现,将在PROC的内部的OPTION(OPTIMIZE未知)DID得到预期的改进计划。
所以,你们中的一些人比我更聪明,你能提供一些关于幕后发生了什么来产生这种结果的线索吗?
另一方面,慢计划也有理由提前中止,GoodEnoughPlanFound而快计划在实际计划中没有提前中止原因。
总之
更新:
在此处查看慢速执行计划:https : //www.dropbox.com/s/cmx2lrsea8q8mr6/plan_slow.xml
在此处查看快速执行计划:https : //www.dropbox.com/s/b28x6a01w7dxsed/plan_fast.xml
注意:出于安全原因,表、架构、对象名称已更改。
我想在数据库中存在的列的名称中搜索字符串。
我正在处理一个维护项目,我处理的一些数据库有 150 多个表,所以我正在寻找一种快速的方法来做到这一点。
你有什么建议吗?
sql-server-2008 ×10
sql-server ×7
cache ×1
index ×1
metadata ×1
role ×1
security ×1
shrink ×1
t-sql ×1
timezone ×1