我想知道两件事:
每个内核是 1 个文件吗?那么四核 = 4 个 tempdb 文件,创建三个新文件?
提前为非常详细的问题道歉。我已经包含了生成完整数据集以重现问题的查询,并且我正在 32 核机器上运行 SQL Server 2012。但是,我认为这不是 SQL Server 2012 特有的,并且我已将这个特定示例的 MAXDOP 强制为 10。
我有两个使用相同分区方案进行分区的表。在用于分区的列上将它们连接在一起时,我注意到 SQL Server 无法像预期的那样优化并行合并连接,因此选择使用 HASH JOIN 代替。在这种特殊情况下,我能够通过基于分区函数将查询拆分为 10 个不相交的范围并在 SSMS 中同时运行这些查询中的每一个来手动模拟更优化的并行 MERGE JOIN。使用 WAITFOR 精确地同时运行它们,结果是所有查询在原始并行 HASH JOIN 所用总时间的 40% 左右完成。
在等效分区表的情况下,有什么方法可以让 SQL Server 自行进行这种优化?我知道 SQL Server 通常可能会产生大量开销,以便并行执行 MERGE JOIN,但在这种情况下,似乎有一种非常自然的分片方法,开销最小。也许这只是优化器还不够聪明以识别的特殊情况?
以下是设置简化数据集以重现此问题的 SQL:
/* Create the first test data table */
CREATE TABLE test_transaction_properties
( transactionID INT NOT NULL IDENTITY(1,1)
, prop1 INT NULL
, prop2 FLOAT NULL
)
/* Populate table with pseudo-random data (the specific data doesn't …Run Code Online (Sandbox Code Playgroud) 我正在遵循指南 - http://www.sqlchicken.com/2009/07/how-to-create-a-server-side-trace-with-sql-profiler/直到我到达第 8 步
- 现在安排您新创建的脚本。在 SSMS 中连接到要跟踪的服务器。转到您的 SQL Server 代理并展开它,以便您可以看到 Jobs 文件夹。右键单击“作业”文件夹并选择“新建作业”。

我找不到SQL Server Agent。我在哪里可以使这个SQL Server Agent可见?我已经给了当前用户所有的访问权限。
我需要一个可以在(或作为)函数中使用并检索 n 值的所有组合的查询。我需要长度 k 的所有组合,其中 k = 1..n。
扩展样本输入和结果,因此输入有 3 个值而不是 2 - 但是,输入值的数量可能从 1 到 n 不等。
示例:输入:在多行中的一列中包含值的表
Value (nvarchar(500))
------
Ann
John
Mark
Run Code Online (Sandbox Code Playgroud)
输出#1:在一列中连接值的表
Ann
John
Mark
Ann,John
John,Mark
Ann,Mark
Ann,John,Mark
Run Code Online (Sandbox Code Playgroud) 我正在构建一个应用程序,我计划在其中嵌入 SQL Server 2012 Express 作为主数据存储。在我的开发机器(具有 3GB RAM 的 Win7-32)上进行测试时,我从未观察sqlservr.exe到使用超过 1GB RAM的过程,正如我对已发布的 SQL Server Express 版硬件扩展限制所期望的那样。
然后我将我的应用程序移到一台服务器级机器(Win Server 2008R2 64 位,16GB RAM)来评估它的性能,并惊讶地发现该sqlservr.exe过程迅速扩展到大约 9.5GB 的 RAM 并停留在那里。
我重新启动了几次,看看是否会有任何影响,但每次,该过程都迅速恢复到 ~9.5GB。现在我当然很高兴让 SQL Server Express 使用我的 RAM,但我想知道这是否是预期的行为,以便我不会依赖基于不正确的 RAM 使用的性能级别。
仅供参考,根据SELECT @@VERSION,我的服务器机器上的 SQL Server 版本是:
Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64)
Oct 19 2012 13:38:57
Copyright (c) Microsoft Corporation
Express Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
Run Code Online (Sandbox Code Playgroud)
我的 9.5GB 号码来自任务管理器中的“私人工作集”号码。来自 …
注意:我不是在问完整的版本控制。
有没有办法自动在 SQL Server 上保存存储过程的历史记录。
类似于 Google Docs 自动保留文档版本历史和维基百科自动保留文章版本历史的方式。
我不希望用户更新存储过程也必须维护存储过程的存储库。这是太多的工作,人们不会这样做。
希望这是我可以在 SQL Server 中打开的功能...
(我所说的存储过程实际上是指函数、触发器等。基本上可编程性下的所有内容。)
我首先发布到/sf/ask/1016555711/因为我怀疑它会在那里获得更多的浏览量。
我们需要创建 nvarchar 数据的哈希值以进行比较。T-SQL 中有多种哈希算法可用,但在这种情况下,最好选择哪一种?
我们希望确保两个不同的 nvarchar 值具有重复哈希值的风险最小。根据我对互联网的研究,MD5 似乎是最好的。那正确吗?MSDN 告诉我们(下面的链接)有关可用算法的信息,但没有说明哪一种适用于什么条件?
我们需要在两个 nvarchar(max) 列上连接两个表。可以想象,执行查询需要很长时间。我们认为最好保留每个 nvarchar(max) 数据的散列值并对散列值进行连接,而不是 nvarchar(max) 值是 blob。问题是哪种哈希算法提供了唯一性,这样我们就不会遇到一个哈希值对应多个 nvarchar(max) 的风险。
[我是初级 T-SQL 程序员]
[..希望我在正确的堆栈交换站点上]
我想获得我执行的所有查询的列表(至少,我从早上开始执行的那些查询)。我需要报告查询的执行时间。
在线搜索并没有给我带来太多有用的信息。我在网上找到的唯一一个看起来很接近的查询是
SELECT
deqs.last_execution_time AS [Time],
dest.TEXT AS [Query]
FROM
sys.dm_exec_query_stats AS deqs
CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest
ORDER BY
deqs.last_execution_time DESC
Run Code Online (Sandbox Code Playgroud)
这个查询返回了一些奇怪的结果(其中大部分是一堆 sproc)。此外,所有这些结果都显示了从今天下午开始执行的查询(我需要从早上开始查询)。
我在之前的问题中找不到任何东西(如果已经问过类似的问题,请指点我)。
我看到了一些关于 SQL Profiler 的建议,但我想 Profiler 只有在我已经开始跟踪时才会帮助我(如果我错了,请纠正我)。
有人可以建议我如何获取从早上开始在数据库上执行的所有查询的列表(包括查询执行时间)。
[如果我也能以某种方式获得执行查询的用户的用户名,这将是有帮助的(不是必需的)]
我的第一个问题,请温柔点。我知道 sa 帐户可以完全控制 SQL Server 和所有数据库、用户、权限等。
我绝对相信应用程序不应该在没有完善的、以商务人士为中心的理由的情况下使用 sa 密码。这个问题的答案包括我对以 IT 为重点的讨论的很多推理
我被迫接受一个新的服务管理系统,除非它使用 sa 密码,否则它将无法工作。我从来没有时间弄清楚为什么在设置评估时,服务器团队试图安装它以使用我设置的固定角色,其中包含 db_creater 和我认为需要的其他权限。哪个失败了。然后我让服务器团队使用 sa 帐户安装,但在其数据库的 dbo 角色帐户下运行,但也失败了。脾气暴躁,我试图让它以 sysadmin 角色的帐户运行,但即便如此也失败了,并且没有有用的错误消息,使我能够在不花费比可用时间更多的时间的情况下弄清楚发生了什么。它仅适用于 sa 帐户和以明文形式存储在配置文件中的密码。
当我询问这个问题并且服务器团队与供应商交谈时,他们得到了令人担忧的答案:“这有什么问题?” 然后'好吧,我们可以看看加扰密码'加扰ffs
我知道有一些方法可以限制对文件的访问,但我认为这只是安全性的另一个弱点
无论如何,我的问题是,有人可以向我指出一些文档,我可以用它向企业解释为什么这是一件坏事并且应该是一个很大的不。我在一个领域工作,这意味着我需要认真对待安全问题,并且一直在努力让业务理解,最终可能会被超越,但我需要尝试。
我已将一个数据库导入 SSDT,其中包含对系统视图(特别是 sys.columns)的引用。问题是,当我构建项目时,我会收到有关未解析引用的警告
从我在 MSDN 论坛上看到的情况来看,它看起来可能是一个已知问题:http : //social.msdn.microsoft.com/Forums/en-US/ssdsgetstarted/thread/5a7026bd-0602-42e6-a639- d73bed903c26
现在,我知道我可以关闭警告或忽略它,但是有人知道实际的解决方案吗?
谢谢
sql-server ×10
ssms ×2
hashing ×1
join ×1
memory ×1
partitioning ×1
performance ×1
security ×1
ssdt ×1
t-sql ×1
tempdb ×1