标签: sql-server

实际最低可能的正实数是多少

MSDN 说实数的范围是 - 3.40E + 38 到 -1.18E - 38, 0 和 1.18E - 38 到 3.40E + 38。显然真正的下限要低得多。以下脚本使用 1.401298E-45 填充 REAL 列:

CREATE TABLE a
  (
    r1 REAL NULL ,
    r2 REAL NULL ,
    r3 REAL NULL
  ) ;
GO
INSERT  INTO a
        ( r1, r2 )
VALUES  ( 1.18E-37, 10 ) ;
GO
DECLARE @i INT ;
SET @i = 1 ;

WHILE @i < 20 
  BEGIN ;

    UPDATE  a
    SET     r1 = r1 / r2 ; …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server sql-server-2008-r2 data-integrity

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

为所有索引生成创建脚本

我正在记录我的数据库,我想在我的数据库中创建一个所有索引的列表。我想这样做的原因是,我可以加班跟踪索引的更改。我目前有一个电子表格,其中包含自我创建该电子表格以来已更改的所有索引,但它没有所有索引。我希望能够生成列表,而不是编写每个索引的脚本。我玩过系统视图,但我无法弄清楚。

如何为每个索引生成索引列表和创建语句?

sql-server-2008 sql-server

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

索引消耗内存吗?

我刚刚开始了解 SQL Server 上的内存使用情况。在问题SQL Server 2008 R2“Ghost Memory”的答案中使用查询时,我发现单个数据库占用了缓冲池中的大部分空间。进一步看,使用sys.allocation_unitssys.indexes,我确认这可能是由于大量使用数据库中的索引造成的。大多数索引都是聚集的。

另一位数据库开发人员认为我们在服务器上存在内存问题 - 由于没有可用内存,查询开始运行很长时间。

我的问题是 - 这些索引的使用以及它们在缓冲池中的存在是否会占用其他进程可用的内存?

sql-server-2008 sql-server

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

在 100 毫米记录上使用 JOIN 更新,如何做得更好?(在 T-SQL 中)

我需要更新单个表中的 1 亿条记录,实际上,通过用简单的 ID 替换列的 varchar 值来规范化表。(我说的是“替换”,但实际上我是将 ID 写入另一列。)

我想要实现的是规范化数据集。尚未标准化的数据没有索引。我的想法是我不会在原始值上构建索引,而是等待,而是索引将在更新完成后用 tinyint 值替换 varchar 值的外键。

UPDATE A
SET A.AutoClassID = B.AutoClassID
FROM AutoDataImportStaging.dbo.Automobile as A
JOIN AutoData.dbo.AutoClass as B on (A.AutoClassName = B.AutoClassName)
Run Code Online (Sandbox Code Playgroud)

背景

  • 在 Server 2008 R2 上使用 MSSQL 2008 R2
  • 服务器有 8 GB RAM
  • 服务器有一个 RAID10, 7200 RPM SATA(不太好,我知道,在生产中这只会读取数据而不会写入数据;加上最近的 HD 短缺使得这对成本来说是必要的)
  • 服务器具有双四核至强 CPU
  • 机器没有做其他任何事情(目前专用于开发,只有这个过程)
  • 简单日志记录已打开(? - 但它是否仍然记录以便它可以回滚?)
  • 请注意,查询引用了两个不同的数据库,这是值得的
  • 表中记录更新的“宽度”为 455 字节

执行期间的资源

  • 物理内存已满
  • 磁盘 I/O 已满
  • CPU 几乎不做任何事情(阻塞点是 I/O)
  • 运行时间已经 14 小时,而且还在增加!

我怀疑一些事情,比如我需要原始数据的索引,即使我会在规范化更新后删除列 (AutoClassName)。我还想知道我是否应该一次循环一条记录而不是 JOIN,这在我开始时看起来很荒谬,但现在看来会更快。

我应该如何更快地更改剩余标准化更新(类似于此更新)的方法?

sql-server-2008 sql-server t-sql

11
推荐指数
3
解决办法
4040
查看次数

从一个主要作业顺序调用多个 SQL Server 代理作业的好方法?

我有几个应该按顺序运行的 SQL Server 代理作业。为了对应该执行的作业有一个很好的概述,我创建了一个主作业,它通过调用EXEC msdb.dbo.sp_start_job N'TEST1'. 在sp_start_job瞬间完成(作业步骤1),但我想我的主要工作要等到工作TEST1已经调用下一个工作之前完成。

所以我写了这个小脚本,它在作业被调用后立即开始执行(作业步骤 2),并强制主作业等待子作业完成:

WHILE 1 = 1
  BEGIN
    WAITFOR DELAY '00:05:00.000';

    SELECT *
    INTO   #jobs
    FROM   OPENROWSET('SQLNCLI', 'Server=TESTSERVER;Trusted_Connection=yes;',
           'EXEC msdb.dbo.sp_help_job @job_name = N''TEST1'',
           @execution_status = 0, @job_aspect = N''JOB''');

    IF NOT (EXISTS (SELECT top 1 * FROM #jobs))
      BEGIN
        BREAK
      END;

    DROP TABLE #jobs;

  END;
Run Code Online (Sandbox Code Playgroud)

这工作得很好。但我觉得更聪明和/或更安全(WHILE 1 = 1?)的解决方案应该是可能的。

我对以下事情很好奇,希望你能给我一些见解:

  • 这种方法有什么问题?
  • 你能建议一个更好的方法来做到这一点吗?

(我首先在StackOverflow 上发布了这个问题,因为我专注于改进代码。仍然有效。但我的猜测是,这里的人们通常会更聪明地说出为什么我不应该像我那样尝试这样做”我现在就做,或者提供好的替代方案。)

编辑(7 月 25 日)
显然我的脚本没有太多错误,根据指出它问题的答案数量很少:-) 这种脚本的替代方法似乎是使用专为这些设计的工具任务(如 SQL Sentry 事件管理器或...) - …

sql-server t-sql sql-server-2008-r2 sql-server-agent

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

如何控制 SSMS 连接对话框中列出的服务器顺序?

我当前的项目涉及大量的数据库改组,因为我们从 SQL 2008 -> 2012 升级,重新分配硬件,重复。

一个小烦恼是 SSMS 中的连接对话框重新调整服务器顺序以将最新的放在最前面。鉴于在任何特定的日子里我都连接到 6-10 个数据库服务器并希望在列表中快速找到一个特定的服务器,这种行为与其说是一种帮助,不如说是一种障碍。

有没有办法禁用这种行为,按字母顺序列出服务器,或者按照添加的顺序……或者每次连接到服务器时都不会改变的任何东西

除此之外,是否有一种完全不同的方法可以更好地管理从它们的列表/服务器场连接到特定服务器?

我正在将 SSMS 用于 SQL 2012(尽管我对 2008 解决方案也很好奇)。

tools sql-server ssms

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

以最少的停机时间重新导入大量数据的最佳方法

我需要每周导入大约 500,000 条包含 IP 查找(只读参考)数据的记录(只有三个 int/bigint cols)。

我真的不想担心将数据与现有表合并,我更愿意清除旧表并重新导入。

理想情况下,运行在数据上的查询将继续运行(我们没有得到很多这样的查询,它们在导入时运行得慢一点是可以接受的,但需要 24/7,所以运行这个“非工作时间”不是一种选择)。

到目前为止尝试过的事情

SSIS:我创建了一个 SSIS 包来截断表和导入 - 运行大约需要 30 秒(真的太长了)。

临时表:导入临时表、截断和复制也需要大约 30 秒。

BCP:批量导入也太慢了(出于某种原因,它比 SSIS 慢(即使没有要维护的索引)-我猜这与 char->int/bigint 事务有关:/

镜台?所以,目前,我想知道如何通过视图读取表,将数据导入镜像表,并更改视图以指向该表......这看起来会很快,但看起来很小对我来说有点hacky。

这似乎应该是一个常见问题,但我找不到推荐的做法 - 任何想法都将不胜感激!

谢谢

sql-server bulk import

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

有没有办法测试 DELETE 是否会因约束而失败?

我希望能够预测 DELETE 是否会违反约束,而无需实际执行删除。

我有什么选择来做这件事?有没有一种简单的方法可以对 DELETE 进行“试运行”?

sql-server-2005 sql-server-2008 sql-server

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

除了重新启动 SQL Server,还有什么方法可以强制重置 SQLCLR AppDomain?

我想强制重置 SQLCLR 使用的 AppDomain。除了重新启动 SQL Server 实例之外,我还能怎么做?

sql-server sql-clr

11
推荐指数
2
解决办法
5120
查看次数

非产出 IOCP 监听器

有谁知道“Non-yielding IOCP Listener”是什么意思?

我们的 SQL Server 上有一个错误检查转储:

=====================================================================                                            
       BugCheck Dump                                                                                             
=====================================================================                                            

This file is generated by Microsoft SQL Server                                                                   
version 9.00.5292.00                                                                                             
upon detection of fatal unexpected error. Please return this file,                                               
the query or program that produced the bugcheck, the database and                                                
the error log, and any other pertinent information with a Service Request.                                       


Computer type is AT/AT COMPATIBLE.                                                                               
Bios Version is DELL   - 1                                                                                       
Phoenix ROM BIOS PLUS Version 1.10 1.5.2                                                                         
Current time is 23:01:04 09/07/12.                                                                               
48 Unknown CPU …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 sql-server

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