标签: sql-server-2005

BCP 在最后一个“1000 行发送到 SQL Server 后停止。发送的总数:...”

我像这样运行 SQL Server 2005 的批量复制程序 BCP:

bcp mydb.dbo.mytbl in myfile.blk -c -S mysvr -U mylogin -P mypass
Run Code Online (Sandbox Code Playgroud)

它运行并产生如下输出:

Starting copy...
1000 rows sent to SQL Server. Total sent: 1000
...
1000 rows sent to SQL Server. Total sent: 55000
Run Code Online (Sandbox Code Playgroud)

但后来它停止了。光标没有返回提示,我没有收到“...行已复制”。信息。

我尝试查询目标表,我已经可以看到我想要导入的行。

我要终止控制台吗?会回滚吗?

sql-server-2005 bulkcopy

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

SQL Server 复制订阅标记为非活动

有什么方法可以强制 SQL Server 永远不要将订阅标记为非活动状态?

当出现连接问题并且我不想每次都重新初始化订阅时,它会偶尔发生。

请注意,我不是在谈论订阅被标记为过期......就像不活动一样。

我们将保留设置为 0(无限)。我宁愿拥有一个大型分发数据库,​​也不愿通过 WAN 为订阅者重新初始化 15GB 的数据库。无论如何,这里真正的问题是,它们有时会在短短几个小时内被标记为不活动……或者有时是几天……这似乎是零星的。有什么方法可以告诉为什么 SQL 决定将它们标记为非活动状态?

replication sql-server-2005 sql-server

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

在线和离线重建索引的不同结果

我在类型为 的外键列上有一个非聚集的、非唯一的索引bigint。当我在线重建索引时,平均碎片下降到3%,有2个碎片,30页。

当我离线运行相同的重建索引时,平均碎片为 25%,有 4 个碎片和 28 个页面。

我认为FILLFACTOR是90。数据库是77GB。我不是 DBA 或类似人员,我是 C# 开发人员,所以我并不完全熟悉所有术语。此表上没有活动,这是在我们的开发环境中发生的。

这是查询,名称已编辑。

ALTER INDEX [IX] ON [dbo].[Table]
REBUILD WITH
(
    PAD_INDEX  = OFF, 
    STATISTICS_NORECOMPUTE  = OFF, 
    ALLOW_ROW_LOCKS  = ON, 
    ALLOW_PAGE_LOCKS  = ON, 
    ONLINE = ON, 
    SORT_IN_TEMPDB = ON
);
Run Code Online (Sandbox Code Playgroud)

什么可能导致这种差异?同样的情况发生在多个表上。

sql-server-2005 sql-server fragmentation index-maintenance online-operations

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

如何在不创建分布式事务的情况下从远程存储过程插入表?

如何在不创建分布式事务的情况下从远程存储过程插入本地表?我想在远程服务器上运行一个存储过程,并将输出用作插入本地表的源。

sql-server-2005 sql-server stored-procedures remote distributed-transactions

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

没有 SA 密码。没有 SQL Server Management Studio。无操作系统身份验证

我有这个问题。

我需要使用 SA 帐户在 MS SQL 数据库上执行一些管理任务。

  • 未设置操作系统身份验证。
  • 未安装 SQL Server Manager Manager Studio。
  • 我没有其他管理员数据库帐户。
  • 我确实有权访问 Windows 管理员帐户
  • 数据库服务器上安装的唯一工具如下所示:

在此处输入图片说明

如何激活操作系统身份验证以便我可以登录数据库并重置 SA 密码?

sql-server-2005 sql-server

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

部分查询的高 I/O

我有一个很大的查询要调整。我写了很多查询,但没有做很多调整。我已经包含了 SQL Sentry Plan Explorer Free (SSPEF) 的屏幕截图:

高输入/输出

在计划的上述部分中,表 pb_WorkRquestLog 包含 229,001 行。但是,查询计划显示大约。3.48 亿行(229,001 x 1,520 次迭代):

在此处输入图片说明

没有 where 子句,因此查询使用的是聚集索引扫描。我已经用 FULLSCAN 重建了所有索引并更新了所有统计信息。

这部分计划正在执行的代码是:

select distinct 
            wrs.ServiceKey 
            , owner.DepartmentName AS GroupName
            , owner.UserName AS UserId
            , owner.WRLCreateDateTime
            , owner.WRLNotes
            , wrx.CreatedDate as WRCreateDateTime
            , wrx.Id
            , wrx.Description 
            , cast(wrx.Notes as varchar(2500)) as Notes
        from    
            prism72ext.dbo.pb_WorkRequestService wrs 
            Join prism72ext.dbo.pb_WorkRequest wrx on (wrs.WorkRequestId = wrx.Id and wrx.Status = 'Incomplete')
            left join (
                select
                    wl.WorkRequestId
                    ,   d.Name AS DepartmentName
                    ,   u.UserName
                    , wl.CreatedDate as …
Run Code Online (Sandbox Code Playgroud)

performance sql-server-2005 execution-plan query-performance performance-tuning

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

为什么以及有时会在肯定有 Sch-M 锁的情况下出现“缺少表错误”?

我有一个综合测试,它重现了我们在生产环境中的一些错误。以下是重现它的 2 个脚本:

第一

DBCC TRACEOFF(-1,3604,1200) WITH NO_INFOMSGS;
SET NOCOUNT ON;
IF @@TRANCOUNT > 0 ROLLBACK
IF object_id('test') IS NOT NULL 
    DROP TABLE test
IF object_id('TMP_test') IS NOT NULL 
    DROP TABLE TMP_test
IF object_id('test1') IS NOT NULL 
    DROP TABLE test1
CREATE TABLE test(Id INT IDENTITY PRIMARY KEY)
GO
INSERT test DEFAULT VALUES
GO 2000
WHILE 1 = 1
BEGIN
    CREATE TABLE TMP_test(Id INT PRIMARY KEY)
    INSERT TMP_test SELECT * FROM test

    WAITFOR DELAY '0:00:00.1'
    BEGIN TRAN

    EXEC sp_rename 'test', 'test1' …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 sql-server

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

是否可以从事务日志(无 MDF)中恢复 SQL Server DB?

我们有一个 SQL Server 2005 服务器,其中包含大约 200 个低流量/无流量存档数据库,并且该服务器没有备份到任何其他设备。数据库文件(MDF 和 LDF)存储在 RAID 阵列上,当 RAID 控制器出现故障时,我们担心会丢失数据。我们将 RAID 控制器和阵列发送给数据恢复公司,他们能够恢复大部分文件,但在某些情况下,我们有事务日志,但缺少主要数据文件。

是否可以仅使用事务日志将数据库恢复到最后一个事务(应该是在创建数据库之后),或者这是无法完成的事情?

sql-server-2005 sql-server recovery restore transaction-log

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

在 varchar 列中存储 NULL 与存储 ''

我意识到这可能被标记为重复,但我特别询问 SQL Server 2005

我在互联网上阅读了相互矛盾的建议,所以我在这里问。特别是在 SQL Server 2005 中,varchar 列中的 NULL 是否与空字符串占用相同的空间?

我在另一个驱动器上构建了一个“持有”表,并用源表中的数据填充它,并且在字段为nullif([field],'')空的地方,我曾经插入空值来代替空值。

然后我构建了一个与保存表结构完全相同的新表,但我没有用 null 替换空白,而是插入了空白,到目前为止它似乎占用了更多空间(我还没有完成填充它和我无法确定它是否正在占用更多数据)

所以在我进一步填充它并最终得到一个比我想象的更大的表格之前,我最好插入空值还是空白?

编辑:

将数据从持有表迁移到新表后,新表大约大了 4gb。

表大小差异

表设计中只有两个小的差异 - 'serial_number' 字段在保持表中是 char(15) 而在目标表中是 varchar(15)。(序列号的最大长度是 14 并且有很多空值——如果我记得的话,我想大约是 3000 万),并且持有表的聚集索引有一个额外的列 - program_name..

拿着桌

USE [Temp_holding_EWS]
GO
/****** Object:  Table [dbo].[AmtoteAccountActivity_holding]    
 Script Date: 02/17/2017 20:41:32 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[AmtoteAccountActivity_holding](
    [_Date] [char](8) NULL,[Community] [varchar](10) NULL,
    [AccountNumber] [varchar](50) NULL,
    [Branch] [varchar](10) NULL,
    [Window] [varchar](3) NULL,
    [Time] …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 sql-server

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

从某个日期范围内的价目表更新未结订单

设置

我已经在reextesterdbfiddle上设置了一个示例。

设想

Price list : 它是产品价格表,一个产品可以有多个活动价格,甚至是未来价格。

+---------+-------+------------+--------+--------+
| product | price | date_price |  base  | active |
+---------+-------+------------+--------+--------+
|   0125  |    90 | 01.01.2017 |  1200  |    0   |
|   0125  |   100 | 25.01.2017 |  1000  |    1   |
|   0125  |   110 | 27.02.2017 |   500  |    1   |
+---------+-------+------------+--------+--------+
|   1200  |   140 | 01.01.2017 |  2000  |    0   |
|   1200  |   150 | 01.02.2017 |  1500  |    1   | …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 sql-server

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