标签: sql-server-2008

增加小数精度突然增加了表的大小

我有一张像:

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 bytesMSDN参考

The reserved space has …

sql-server-2008 sql-server

7
推荐指数
1
解决办法
2332
查看次数

“使用登录名的当前安全上下文进行”如何将用户密码传递给远程服务器

假设您有一个带有“链接服务器”的 SQL Server 到另一台服务器 - 所说的“链接服务器”设置为使用“使用登录的当前安全上下文进行”作为其身份验证模型。

当所有服务器都拥有一个哈希时,SQL Server 如何向其他服务器提供正确的密码(在处理非 W​​indows 凭据时)。

我之前已经将登录名从服务器传输到服务器,我知道哈希值单独存储在 SQL 中,并且在使用密码创建登录名时,这通常显示为十六进制值,例如:

create login test with password = '0x22A9AE652CFC38938D56A9C3872B266B192D16E4' hashed
Run Code Online (Sandbox Code Playgroud)

如果 SQL 只有一个可用的散列 - 它可以使用散列登录到远程服务器吗?或者原始(未散列的)密码是否在整个连接期间都保存在用户的会话/内存中,然后 SQL 可以检索并传递到远程服务器进行登录?

如果服务器可以使用哈希而不是密码登录 - 这可以在正常登录中完成还是纯粹是链接服务器的内部功能?

纯粹是一个好奇的问题——喜欢了解这些东西是如何运作的。

sql-server-2008 security sql-server linked-server

7
推荐指数
1
解决办法
4597
查看次数

在多个命名 SQL Server 实例上运行 SSIS 的最安全方法是什么?

我有一个 Active/Active SQL Server 2008 R2 集群。每个节点上有两个命名实例,没有默认实例。

我需要将 SSIS 包部署到不同的实例。为此,我需要修改 MsDtsSrvr.ini.xml 文件以添加实例名称,以便 BIDS 和 SSMS 可以看到它们。我将所有 4 个实例名称都放在那个 XML 文件中(在两个节点上)并在两个节点上重新启动了 SSIS。通过集成服务连接连接到 SSMS 中的任何实例时,我现在可以看到每个实例的文件夹。但是,单击另一个节点上的 2 个实例名称会导致登录失败,因为它们在当前节点上未处于活动状态。也许这只是一个不便,但我会遇到这个设置的任何问题吗?或者有没有更有意义的方法来做到这一点?

sql-server-2008 sql-server best-practices clustering ssis

7
推荐指数
1
解决办法
1991
查看次数

将日期转换为 yyyymmdd 格式

建议使用哪个 SQL 命令将日期转换为yyyymmdd格式?

  1. convert(varchar(8), getdate(), 112); 或者
  2. convert(varchar, getdate(), 112)

我注意到如果我使用第二个,它会在日期后附加两个空格。(例如 [ 20130705] - 注意值后面的两个空格20130705

是否建议使用第一个 SQL 语句?

sql-server-2008 sql-server date-format type-conversion

7
推荐指数
1
解决办法
11万
查看次数

什么时候不应该压缩表

我们有两台服务器。我们刚刚压缩了一个,但我接手了这个小项目,这个人说有些表不是很好的候选人。与许多其他人一样,性能至关重要。说某些表不应该被压缩是否准确?如果是这样,寻找的一般阈值是多少?我运行他的脚本来检查读取/写入的每个对象,但是由于这看起来像是历史,而不是时间范围内发生的事情,因此这可能不是衡量它的准确方法。

sql-server-2008 sql-server compression

7
推荐指数
1
解决办法
1658
查看次数

如何为每个片段设置 SQL Server 索引页?

我有 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 为这个表或索引分配更多的增长,以便每个片段的页数更高?

index sql-server-2008 sql-server fragmentation

7
推荐指数
1
解决办法
1297
查看次数

如何按表查找内存使用情况?

我想知道每个表使用了多少内存。这些信息是否可以在 DMV 或其他地方获得?

sql-server-2008 sql-server

7
推荐指数
1
解决办法
1万
查看次数

等待类型 PREEMPTIVE_XE_CALLBACKEXECUTE 是什么意思?

我在上周有两个实例,其中DROP扩展事件会话的命令花费了一天的时间来完成,等待:PREEMPTIVE_XE_CALLBACKEXECUTE

谁能解释一下这种等待类型是什么意思?

更多背景信息: 首先,我运行了一个 T-SQL 命令来删除会话,一天后它完成了。使用 时sp_whoisactive,我看到查询正在等待PREEMPTIVE_XE_CALLBACKEXECUTE

在此期间,对象资源管理器收集元数据的查询被阻止并收到锁定超时,但没有其他抱怨(或者我当时认为)。

我试图在星期五放弃另一个会话,并且发生了相同的行为,只是它不像第一次事件那样在一天后消失。相反,我今天早上发现客户端应用程序无法连接。它被DROP EVENT SESSION查询阻止了。

重新启动 SQL 服务清除了阻塞查询。

我找不到任何有助于诊断这是什么等待类型的东西……以及为什么我的事件会话不会像它们应该的那样下降。你能帮我吗?

服务器信息: SQL 2008 R2 Enterprise with SP2

sql-server-2008 sql-server extended-events wait-types

7
推荐指数
1
解决办法
2836
查看次数

SQL Server 为大量插入调整表

我正在尝试解决性能问题,我需要建议。

我有一张桌子,每天大约有两次插入大量插入的内容,同时每个人都试图从中读取。所以我有锁,一切都变得非常缓慢。

我的性能要求如下:

  1. 许多作家,来自不同的来源,我更喜欢每一个写作都是原子的。
  2. 我不关心写入的顺序,数字 7 可以在数字 3 之前出现。
  3. 写应该尽快结束,我希望作者等待尽可能少的时间。
  4. 数据永远不会更新,只会插入。
  5. 我有很多很多读者。
  6. 读者希望在阅读时看到最新的快照。
  7. 我可以忍受读者看到延迟数据(10-20 秒)
  8. 我偶尔需要对这些数据进行复杂的大型查询,所以我需要几个索引。

您将如何解决这个问题,您将如何使用 SQL Server 实现这一点?


我正在考虑将其拆分为 2 个表......一个用于插入,一个用于读取,一个工人移动数据。

大型查询只会在第二个上运行,需要更新数据的读者可以在第二个上运行,并从第一个完成他们需要的内容。

sql-server-2008 sql-server

7
推荐指数
1
解决办法
1964
查看次数

如何使用 T-SQL 确定 Windows Server 启动时间

我正在寻找一种方法来找出 Windows Server 上次仅使用 t-sql 命令启动的时间。

我试图保持在默认的安全配置内(即我不想启用 xp_cmdshell)

sql-server-2008 sql-server

7
推荐指数
1
解决办法
1984
查看次数