标签: sql-server

如何列出或搜索数据库中的所有列名?

我想在数据库中存在的列的名称中搜索字符串。

我正在处理一个维护项目,我处理的一些数据库有 150 多个表,所以我正在寻找一种快速的方法来做到这一点。

你有什么建议吗?

sql-server-2008 database-design sql-server metadata

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

SQL Server“可疑”数据库?

当您有一个标记为 的数据库时,您会怎么做Suspect

从上次备份恢复?

请指教。

sql-server

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

DBA 必须了解哪些有关 SSAS 的知识?

我看过很多涵盖 SSAS 业务方面的材料,但关于行政和管理的重要方面的内容并不多。

从管理 SQL Server Analysis Services 实例的角度来看,工作的 DBA 必须了解哪些有关 SSAS 的知识才能正确有效地管理它?

sql-server ssas

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

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万
查看次数

SQL批处理、语句和RPC之间的区别?

SQL 批处理、T-SQL 语句和远程过程调用有什么区别?
如何判断部分 T-SQL 代码是批处理还是语句?

sql-server

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

当以前快速的 SQL 查询开始运行缓慢时,我应该在哪里查找问题的根源?

背景

我有一个针对 SQL Server 2008 R2 运行的查询,该查询连接和/或左连接大约 12 个不同的“表”。该数据库相当大,有超过 5000 万行的许多表和大约 300 个不同的表。这是一家在全国拥有 10 个仓库的大型公司。所有的仓库都对数据库进行读写。所以它很大而且很忙。

我遇到问题的查询如下所示:

select t1.something, t2.something, etc.
from Table1 t1
    inner join Table2 t2 on t1.id = t2.t1id
    left outer join (select * from table 3) t3 on t3.t1id = t1.t1id
    [etc]...
where t1.something = 123
Run Code Online (Sandbox Code Playgroud)

请注意,其中一个连接位于不相关的子查询上。

问题是从今天早上开始,没有对系统进行任何更改(我或我团队中的任何人都知道),通常需要大约 2 分钟才能运行的查询,开始需要一个半小时才能运行——当它跑了。数据库的其余部分运行良好。我已经从它通常运行的 sproc 中取出了这个查询,并且我已经在 SSMS 中以相同的速度在带有硬编码参数变量的情况下运行它。

奇怪的是,当我将不相关的子查询放入临时表中,然后使用它而不是子查询时,查询运行良好。另外(这对我来说是最奇怪的)如果我将这段代码添加到查询的末尾,查询运行得很好:

and t.name like '%'
Run Code Online (Sandbox Code Playgroud)

我从这些小实验中得出结论(可能是错误的),速度变慢的原因是 SQL 的缓存执行计划是如何设置的——当查询有点不同时,它必须创建一个新的执行计划。

我的问题是:当一个曾经运行得很快的查询在半夜突然开始运行缓慢并且除了这个查询之外没有其他任何影响时,我该如何解决它以及如何防止它在未来发生? 我怎么知道 SQL 在内部做了什么使其如此缓慢(如果错误的查询运行,我可以获得它的执行计划但它不会运行——也许预期的执行计划会给我一些东西?)?如果这个问题与执行计划有关,我如何让 SQL 不认为真正糟糕的执行计划是个好主意?

此外,这不是参数嗅探的问题。我以前见过,但事实并非如此,因为即使我在 SSMS 中对变量进行硬编码,我的性能仍然很慢。

performance sql-server-2008 sql-server

39
推荐指数
2
解决办法
12万
查看次数

SQL Server - 授予对整个架构与对象的权限?

当谈到 SQL Sever 中的数据库权限管理领域时,我是非常绿色的。

让我们举一个简单的例子。

假设帐户“admin”是架构 A、B 和 C 的所有者。

还有另一个帐户“minion”,您希望对在模式 A、B 和 C 下创建的任何对象(表/视图)拥有完全权限(更新/删除/插入/选择/更改)。

这可能吗?还是每次在这些模式下添加表/视图时都必须执行授权语句?(对我来说似乎有点傻)。

sql-server permissions role

39
推荐指数
2
解决办法
14万
查看次数

在 SQL Server 中查找新跟踪标志的方法

那里有很多跟踪标志。有些有据可查,有些没有,还有一些在 2016 版本中找到了默认行为状态的方法。除了官方支持渠道、微软员工等,还有什么方法可以找到新的跟踪标志?

我已经在这里这里阅读了 Aaron Bertrand 最近的几篇文章,但没有发现任何关于新跟踪标志的信息。

我将 mssqlsystemresource 的数据和日志文件复制到一个新位置,并像常规数据库一样附加它以浏览系统表和视图,但没有立即发现任何内容。我考虑过列出已知跟踪标志的列表,并循环遍历不在该列表中的数字,以查看 DBCC TRACEON 允许哪些,但想先在这里提出问题。

假设启用它们的 DBCC 命令必须检查某些资源以确保跟踪标志有效,那么它会到达哪里?是否有包含列表的 .dll 或其他系统文件?

我知道这个问题撒了一个广泛的网络,但促使它阅读的原因是阅读了具有特定预期行为的 Trace Flag 以及 2016 年没有产生所描述效果的新功能。我最初的想法是,也许数字以某种方式转置了,比如 7129 变成了 7219。我希望得到一个范围内的有效跟踪标志列表,比如 7000-7999,以寻找排列。将它们全部作为 DBCC TRACEON 标志和启动参数进行测试,再加上针对功能行为测试结果,将会非常麻烦。

sql-server trace-flags

39
推荐指数
3
解决办法
1738
查看次数

SQL Server 的“服务器总内存”消耗停滞了数月,还有 64GB 以上的可用空间

我遇到了一个奇怪的问题,SQL Server 2016 标准版 64 位似乎将自己限制在分配给它的总内存的一半(128GB 中的 64GB)。

的输出@@VERSION是:

Microsoft SQL Server 2016 (SP1-CU7-GDR) (KB4057119) - 13.0.4466.4 (X64) 2017 年 12 月 22 日 11:25:00 版权所有 (c) Windows Server 2012 R2 Datacenter 6.3 上的 Microsoft Corporation 标准版(64 位)(内部版本 9600:)(管理程序)

的输出sys.dm_os_process_memory是:

sys.dm_os_process_memory

当我查询时sys.dm_os_performance_counters,我看到Target Server Memory (KB)是在131072000Total Server Memory (KB)是 at 的一半以下65308016。在大多数情况下,我认为这是正常行为,因为 SQL Server 尚未确定它需要为自己分配更多内存。

然而,它已经“卡住”在 64GB 左右超过 2 个月了。在此期间,我们对一些数据库执行了大量内存密集型操作,并向实例添加了近 40 个数据库。我们总共有 292 个数据库,每个数据库都有 4GB 的预分配数据文件和 256MB 的自动增长速率和 2GB …

performance sql-server memory sql-server-2016 sp-blitz

39
推荐指数
2
解决办法
4801
查看次数

SELECT * 在生产代码中的良好用例是什么?

出于习惯,我从不SELECT *在生产代码中使用(我只将它用于临时废料查询,通常是在学习对象的模式时)。但是我现在遇到了一个案例,我很想使用它,但如果我使用它会觉得很便宜。

我的用例是在一个存储过程中,其中创建了一个本地临时表,该表应始终与用于创建它的基础表相匹配,无论何时运行该存储过程。临时表是在很晚之后填充的,因此快速创建临时表而不冗长的方法SELECT * INTO #TempTable FROM RealTable WHERE 1 = 0尤其适用于具有数百列的表。

如果我的存储过程的使用者不知道动态结果集,那么我将服务出售给 有什么问题SELECT *吗?

sql-server best-practices sql-server-2016

39
推荐指数
5
解决办法
8353
查看次数