标签: sql-server-2008

从 Windows 迁移到 Linux

我计划将 SQL Server 2008 标准版迁移到 Linux 服务器实例。我对这个实例有两个问题:

  1. 如何激活这个实例?
  2. 如何在单一模式下运行实例来恢复所有数据库(使用 master)?

sql-server-2008 sql-server linux

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

数据库备份压缩

我试图查看我的所有备份是否已压缩。我运行下面的查询来检查但没有得到好的结果:

select top(10) database_name, 
case when  backup_size = compressed_backup_size then 'Compressed'
else 'Not compressed'
end as Compression, 
backup_finish_date
from msdb.dbo.backupset
where database_name ='MyDAtabase'
order by backup_start_date desc
Run Code Online (Sandbox Code Playgroud)

我在用:

Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64)
2012 年 6 月 28 日 08:36:30 版权所有 (c)
Windows NT 6.1(内部版本 7601:Service Pack 1)上的Microsoft Corporation标准版(64 位)

默认情况下,我们设置了压缩,但是一旦我运行该查询,我得到的结果数据库没有被压缩。

sql-server-2008 sql-server backup compression

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

为什么我的数据库结构和 SELECT 操作会生成 NULL?

我对数据库问题没有太多经验,所以请原谅文字墙,我相信上下文对于理解问题和目标很重要。


我每天都会从另一个系统收到一个 CSV 文件,我希望将其保留在 Microsoft SQL Server 上运行的数据库中。为了实现这一点,我每天安排一个 PowerShell 脚本,它使用 bcp 实用程序将 CSV ( accounts.csv ) “加载”到accounts_stage具有 CSV 文件“精确”布局的表 ( ) 中。此外,我将时间戳“写入”到另一个表 ( import_stage) 中。该accounts_stage表具有触发器集,并且 bcp 配置为触发该触发器。

导入完成后,我想“规范化”数据。对于一个基本示例,假设这仅涉及合同编号(在 CSV 文件中名为“Vnr”的字段),它是一个字符串。我有另一个表 ( contracts),它被触发器填充:

INSERT INTO dzp.contractid(vnr)
SELECT DISTINCT
    a.Vnr
FROM dzp.accounts_stage a
WHERE NOT EXISTS(
    SELECT id.vnr
    FROM dzp.contractid id
)
Run Code Online (Sandbox Code Playgroud)

这应该并且似乎完成了将所有导入到表中的合同编号contractidscontractids.contractId是 BIGINT PRIMARY KEY、IDENTITY 和自动增量。

我将导入元数据添加到我的表中,如下所示:

   CREATE TABLE #IMPORTMETADATA
            ([importid] bigint
            ,[generated_timestamp] datetime …
Run Code Online (Sandbox Code Playgroud)

trigger sql-server-2008 sql-server import csv

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

连接表名每天都在变化的表

我需要一些帮助来弄清楚如何将表连接到我的查询中。表名每天都在更改,因为表名中使用了日期,而旧表因不再需要而被删除。

我的查询查找在数据库中有数据并且正在处理的“扫描”(因为缺少更好的词)。

我目前的查询是:

USE RetinaCSDatabase
SELECT S.ScanID [Scan ID], S.PolicyName [Scan], DATEADD(hh, +2, S.StartTime) [Scan Start], A.AssetName [Scanner], COUNT(AIPS.AssetIPID) [Hosts], S.TransactionGroup [Transaction Group ID]
FROM Scan S (NOLOCK)
LEFT JOIN Scanner SC (NOLOCK) ON S.ScannerID = SC.ScannerID
LEFT JOIN Asset A (NOLOCK) ON SC.AssetID = A.AssetID
LEFT JOIN Asset_IP_Scan AIPS (NOLOCK) ON S.ScanID = AIPS.ScanID
WHERE S.ProcessStatus < 2
GROUP BY S.ScanID, S.PolicyName, S.StartTime, A.AssetName, S.TransactionGroup
ORDER BY S.StartTime ASC, S.PolicyName ASC, A.AssetName ASC
Run Code Online (Sandbox Code Playgroud)

我需要加入的是包含仍需要处理的数据的表。这些表以名称“evt_scan_”开头,然后是日期。因此,例如,完整的表名将是“evt_scan_20171222”。2017 年 12 月 22 日执行的扫描数据将在表“evt_scan_20171222”中包含数据,并且可能在接下来的几天表“evt_scan_20171223”中包含数据。所以,我首先需要我的查询来检查表是否存在,然后加入它进行计数并检查接下来的天表是否存在,加入它进行另一个计数并将 …

sql-server-2008 sql-server t-sql

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

删除和插入性能 SQL Server

我有以下存储过程需要将近一个小时才能完成。结果集大约有 20 万台机器。

我所做的只是从链接服务器中提取一组 id,在本地服务器中删除这些 id,然后从远程服务器中提取这些 id 的所有详细信息并插入它们。INSERT 占 90%,DELETE 表占 9%,SELECT INTO 占 1%。

id 是主键/聚集索引。

    DECLARE @ProcessDate DATETIME
    SET @ProcessDate = CONVERT(VARCHAR(10), DATEADD(DAY, -3,
                                                    GETDATE()), 111)

    SELECT  DISTINCT id
    INTO    #temp_machines
    FROM    remote_server.db.dbo.table1
    WHERE   dt_modify >= @ProcessDate

    DELETE  FROM local_server.db.dbo.table2
    WHERE   id IN ( SELECT id  FROM  #temp_machines )

    INSERT  INTO local_server.db.dbo.table2
    SELECT  *
    FROM    remote_server.db.dbo.table1
    WHERE   id IN ( SELECT id  FROM  #temp_machines )
Run Code Online (Sandbox Code Playgroud)

有什么关于提高性能的建议吗?

performance sql-server-2008 sql-server linked-server query-performance

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

如何在 32 位服务器上获取 Sql Server 2016?

我没有构建它,但我们有一个 32 位的 Windows Server 2008,带有 SQL Server 2008 和 4GB 的 RAM。

我需要将它升级到 SQL Server 2016,以便将日志传送到新服务器,这样我们就可以摆脱困境。

问题 - 看起来 SQL Server 2016 至少需要 Windows Server 2012,它只有 64 位。

问题:如何将数据迁移到 SQL 2016 服务器,停机时间小于 1 天?

有没有办法通过兼容性级别来解决它?

sql-server-2008 sql-server sql-server-2016

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

SQL Server 代理服务已删除

是否有人遇到过在运行 SQL Server 2014 的服务器上卸载使用 SQL Server Express 2008 的应用程序 (arcserv) 的问题?卸载 arcserv 时,它或用户删除了 SQL Server 代理。什么是/是代理恢复过程,

  1. 从安装媒体运行修复
  2. 再次运行安装媒体
  3. 卸载 SQL Server 并重新安装

我们的修复工作遇到了多个问题,包括由于缺少权限而无法访问的注册表组件键。

sql-server-2008 sql-server sql-server-agent sql-server-2014

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

将两个现有列中的值添加到新列中以获得总计

我们的数据库中有两个名为“ClientIncome”和“PartnerIncome”的现有列。我们想添加一个名为“HouseholdIncome”的新列

我们想将“ClientIncome”和“PartnerIncome”中的值添加到新的“HouseholdIncome”列中?

这是我们数据库的一个小例子。

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Incomes](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [ClientIncome] [float] NOT NULL,
    [PartnerIncome] [float] NULL,
    [HouseholdIncome] [float] NULL
) ON [PRIMARY]

GO
SET IDENTITY_INSERT [dbo].[Incomes] ON 

GO
INSERT [dbo].[Incomes] ([Id], [ClientIncome], [PartnerIncome], [HouseholdIncome]) VALUES (1, 130.77, NULL, NULL)
GO
INSERT [dbo].[Incomes] ([Id], [ClientIncome], [PartnerIncome], [HouseholdIncome]) VALUES (2, 294.82, 339.28, NULL)
GO
INSERT [dbo].[Incomes] ([Id], [ClientIncome], [PartnerIncome], [HouseholdIncome]) VALUES (3, 0, NULL, NULL)
GO
INSERT [dbo].[Incomes] ([Id], [ClientIncome], [PartnerIncome], [HouseholdIncome]) …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server

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

INSERT 语句错误消息引用列我没有包含在查询中

我正在使用 MSSQL 2008。

我的 INSERT 语句如下:

INSERT INTO [DB1].[dbo].[SpotArtSong](ID)
SELECT  SNG.S_ID
FROM [DB1].[dbo].[SpotArtSong] SPOT
INNER JOIN [DB2].[dbo].[nt-art] ART 
ON ART.Artist_Name LIKE SPOT.[Artist]+'%'
INNER JOIN [DB2].[dbo].[nt-sng] SNG 
ON ART.Artist_ID  = SNG.Artist_ID
AND left(SNG.SONG_TITLE,10) = left(SPOT.[Song],10)
WHERE spot.BDSID is NULL
Run Code Online (Sandbox Code Playgroud)

[DB1].[dbo].[SpotArtSong] 上的 [ID] 列有一些我试图替换的空值。我找到了替换项,在查看完整的列结果时,我对从 SNG.S_ID 返回的搜索结果感到满意。我正在尝试将该一列插入到 [DB1].[dbo].[SpotArtSong] 上的一列中。

本质上,我将一些数据报废到 [DB1].[dbo].[SpotArtSong] 中,并将其与 [DB2].[dbo].[nt-art] (ART) 和 [DB2] 之间的一些现有生产数据进行匹配.[dbo].[nt-sng] (SNG)。我知道 ART 和 SNG 中的数据是正确的,我正在将其与 SPOT 中报废的数据相关联

失败声明说:

Cannot insert the value NULL into column 'Artist', table 
'DB1.dbo.SpotArtSong'; column does not allow nulls. INSERT 
fails.
The …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server

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

如何从 SQL Server 中删除临时表?

我想删除我在 SQL Server 2008 的脚本中使用的临时表。如果不编写几行代码,我找不到删除它的方法。我一直无法找到正常工作的代码。有没有什么办法不用编写代码就可以做到这一点?如果没有,我的方法应该是什么?在新脚本中复制我的代码然后创建同名临时表会有帮助吗?

非常感谢任何帮助/建议/建议。

sql-server-2008 sql-server

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