我有一张像:
CREATE TABLE grid_rows(
[grid_row_id] [int] NOT NULL,
[grid_column_id] [smallint] NOT NULL,
[decimal_val] [decimal](18, 6) NULL,
[datetime_val] [datetime] NULL,
[integer_val] [int] NULL,
[string_val] [varchar](1024) NULL
)
Run Code Online (Sandbox Code Playgroud)
这张桌子有一些 1,037,560 rows
exec sp_spaceused "grid_rows" gives:
rows reserved data
1,037,560 461,768KB 302,648KB`
Run Code Online (Sandbox Code Playgroud)
将精度从 (18, 6) 更改为 (24,6) 后即
ALTER TABLE grid_rows ALTER COLUMN decimal_val decimal(24, 6)
exec sp_spaceused "grid_rows" gives:
rows reserved data
1,037,560 641,352KB 560,832KB
Run Code Online (Sandbox Code Playgroud)
根据所分配的空间decimal(18,6)就是9 bytes那的(24, 6)是13 bytes。MSDN参考
The reserved space has …
假设您有一个带有“链接服务器”的 SQL Server 到另一台服务器 - 所说的“链接服务器”设置为使用“使用登录的当前安全上下文进行”作为其身份验证模型。
当所有服务器都拥有一个哈希时,SQL Server 如何向其他服务器提供正确的密码(在处理非 Windows 凭据时)。
我之前已经将登录名从服务器传输到服务器,我知道哈希值单独存储在 SQL 中,并且在使用密码创建登录名时,这通常显示为十六进制值,例如:
create login test with password = '0x22A9AE652CFC38938D56A9C3872B266B192D16E4' hashed
Run Code Online (Sandbox Code Playgroud)
如果 SQL 只有一个可用的散列 - 它可以使用散列登录到远程服务器吗?或者原始(未散列的)密码是否在整个连接期间都保存在用户的会话/内存中,然后 SQL 可以检索并传递到远程服务器进行登录?
如果服务器可以使用哈希而不是密码登录 - 这可以在正常登录中完成还是纯粹是链接服务器的内部功能?
纯粹是一个好奇的问题——喜欢了解这些东西是如何运作的。
我有一个 Active/Active SQL Server 2008 R2 集群。每个节点上有两个命名实例,没有默认实例。
我需要将 SSIS 包部署到不同的实例。为此,我需要修改 MsDtsSrvr.ini.xml 文件以添加实例名称,以便 BIDS 和 SSMS 可以看到它们。我将所有 4 个实例名称都放在那个 XML 文件中(在两个节点上)并在两个节点上重新启动了 SSIS。通过集成服务连接连接到 SSMS 中的任何实例时,我现在可以看到每个实例的文件夹。但是,单击另一个节点上的 2 个实例名称会导致登录失败,因为它们在当前节点上未处于活动状态。也许这只是一个不便,但我会遇到这个设置的任何问题吗?或者有没有更有意义的方法来做到这一点?
建议使用哪个 SQL 命令将日期转换为yyyymmdd格式?
convert(varchar(8), getdate(), 112); 或者convert(varchar, getdate(), 112)我注意到如果我使用第二个,它会在日期后附加两个空格。(例如 [ 20130705] - 注意值后面的两个空格20130705)
是否建议使用第一个 SQL 语句?
我们有两台服务器。我们刚刚压缩了一个,但我接手了这个小项目,这个人说有些表不是很好的候选人。与许多其他人一样,性能至关重要。说某些表不应该被压缩是否准确?如果是这样,寻找的一般阈值是多少?我运行他的脚本来检查读取/写入的每个对象,但是由于这看起来像是历史,而不是时间范围内发生的事情,因此这可能不是衡量它的准确方法。
我有 SQL Server 2008 和一些数据库。我发现我的表的一个索引非常零碎(我怎么知道:http : //msdn.microsoft.com/en-us/library/ms189858.aspx)
的avg_fragmentation_in_percent是高达97%以上,且片段计数是数千。非常有趣的avg_fragment_size_in_pages是,它只是略大于 1。我可以对其进行碎片整理,这有帮助,但我想首先防止这种情况发生。
为什么每个片段的页数如此之低?我有FILEGROWTH = 128MB整个数据库,但是这个特定的表是最活跃的 - 那么有没有办法告诉 SQL Server 为这个表或索引分配更多的增长,以便每个片段的页数更高?
我在上周有两个实例,其中DROP扩展事件会话的命令花费了一天的时间来完成,等待:PREEMPTIVE_XE_CALLBACKEXECUTE。
谁能解释一下这种等待类型是什么意思?
更多背景信息:
首先,我运行了一个 T-SQL 命令来删除会话,一天后它完成了。使用 时sp_whoisactive,我看到查询正在等待PREEMPTIVE_XE_CALLBACKEXECUTE。
在此期间,对象资源管理器收集元数据的查询被阻止并收到锁定超时,但没有其他抱怨(或者我当时认为)。
我试图在星期五放弃另一个会话,并且发生了相同的行为,只是它不像第一次事件那样在一天后消失。相反,我今天早上发现客户端应用程序无法连接。它被DROP EVENT SESSION查询阻止了。
重新启动 SQL 服务清除了阻塞查询。
我找不到任何有助于诊断这是什么等待类型的东西……以及为什么我的事件会话不会像它们应该的那样下降。你能帮我吗?
服务器信息: SQL 2008 R2 Enterprise with SP2
我正在尝试解决性能问题,我需要建议。
我有一张桌子,每天大约有两次插入大量插入的内容,同时每个人都试图从中读取。所以我有锁,一切都变得非常缓慢。
我的性能要求如下:
您将如何解决这个问题,您将如何使用 SQL Server 实现这一点?
我正在考虑将其拆分为 2 个表......一个用于插入,一个用于读取,一个工人移动数据。
大型查询只会在第二个上运行,需要更新数据的读者可以在第二个上运行,并从第一个完成他们需要的内容。
我正在寻找一种方法来找出 Windows Server 上次仅使用 t-sql 命令启动的时间。
我试图保持在默认的安全配置内(即我不想启用 xp_cmdshell)
sql-server ×10
sql-server-2008 ×10
clustering ×1
compression ×1
date-format ×1
index ×1
security ×1
ssis ×1
wait-types ×1