当使用 SQL Server Management Studio for SQL Server 2008 R2 连接到本地 SQL Server 2008 R2 实例(版本 10.50.2500)时,我知道如果我使用实例名称(local)\sql2008,它将无法将调试器附加到我尝试执行的任何查询使用错误消息进行调试
无法启动 T-SQL 调试。无法连接到计算机“(本地)”。请求的名称有效,但未找到请求类型的数据。
但是,如果我更改src\sql2008与调试器的连接,则可以愉快地运行。
(local)除了我上面指出的调试器问题之外,让您的连接使用别名还有其他区别吗?
我目前正在开发一个项目,该项目从平面文件 (csv) 中批量导入数据,大约 18 个不同的文件通过一些存储过程链接到特定的表。
我按照数据加载性能指南中的建议进行了操作。
数据库处于BulkLogged恢复模式以最小化日志记录,当在包含 600000 行的文件上执行以下存储过程时,我收到错误
消息 9002,级别 17,状态 4,过程 SP_Import__DeclarationClearanceHistory_FromCSV,第 34 行
数据库的事务日志已满。要找出无法重用日志中的空间的原因,请参阅 sys.databases 中的 log_reuse_wait_desc 列
(出于测试目的,我在开始导入之前进行了完整备份)。
看着log_reuse_wait_desc我看到以下内容:
log_reuse_wait_desc检查点。所有其他导入成功导入。
欢迎任何解决此问题的意见。
PROCEDURE [dbo].[SP_Import_DeclarationClearanceHistory_FromCSV]
@FilePath [nvarchar](1000)
AS
BEGIN
-- Creating a Temproary Table for importing the data from csv file.
DBCC TRACEON(610)
CREATE TABLE #DeclarationClearanceHistory
(
[ItemID] [int] IDENTITY(1, 1) NOT NULL ,
[CMSDeclarationID] [bigint] NOT NULL ,
[StatusCode] [nvarchar](10) NOT NULL ,
[SubStatus] [nvarchar](10) NULL ,
[DepartmentCode] [nvarchar](10) …Run Code Online (Sandbox Code Playgroud) 我刚刚在 1MM 行表上创建了一个聚集索引(打开了页和行锁定)。我现在尝试运行查询,但出现此错误:
“SQL Server 数据库引擎的实例此时无法获取LOCK资源。当活动用户较少时重新运行您的语句。请数据库管理员检查此实例的锁和内存配置,或检查长时间运行交易。”
我稍后需要调整页/行锁定设置,但同时我需要删除索引,因为我有用户查询表。我试图放弃它,但我收到了同样的错误。有什么建议可以永久删除索引吗?谢谢你。
编辑 1:基于下面的 Remus 回答,我运行了以下脚本以启用锁的动态内存分配。
EXEC sp_CONFIGURE 'show advanced options', 1 RECONFIGURE
EXEC sp_configure 'locks', 0 RECONFIGURE
Run Code Online (Sandbox Code Playgroud)
然后,我重新启动了服务器。
我刚刚为一个相当大的数据库(1.3 TB)编写了一个备份语句,我一直在使用一个更小的数据库(10 GB + 10 GB 日志文件)对其进行测试。备份写入三个目的地。在测试期间,我注意到当备份运行时,每个备份文件的大小约为 1.2 GB,但是一旦备份过程完成,文件就会缩小到 600 MB 以下。
我有兴趣了解:
这是我正在使用的备份语句:
BACKUP DATABASE @DatabaseName
TO DISK = @backupMedia1,
DISK = @backupMedia2,
DISK = @backupMedia3
WITH COMPRESSION, RETAINDAYS = 0, NOFORMAT, INIT, NOSKIP, NAME = @DatabaseName
Run Code Online (Sandbox Code Playgroud) 有人可以向我解释 collationsql_slovak_cp1250_ci_as与collation 之间的区别Slovak_CI_AS吗?
我有一个 db 设置为sql_slovak_cp1250_ci_as并且共享主机仅支持Slovak_CI_AS. 应该不会有问题吧?
非常感谢。
为什么 PostgreSQL 选择大象作为它的标志?从logo wiki 中不清楚。
更新:现在维基更新:) 谢谢!
我的任务是编写一个更新查询来更新一个包含超过 8.5 亿行数据的表。以下是表结构:
源表:
CREATE TABLE [dbo].[SourceTable1](
[ProdClassID] [varchar](10) NOT NULL,
[PriceListDate] [varchar](8) NOT NULL,
[PriceListVersion] [smallint] NOT NULL,
[MarketID] [varchar](10) NOT NULL,
[ModelID] [varchar](20) NOT NULL,
[VariantId] [varchar](20) NOT NULL,
[VariantType] [tinyint] NULL,
[Visibility] [tinyint] NULL,
CONSTRAINT [PK_SourceTable1] PRIMARY KEY CLUSTERED
(
[VariantId] ASC,
[ModelID] ASC,
[MarketID] ASC,
[ProdClassID] ASC,
[PriceListDate] ASC,
[PriceListVersion] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90)
)
CREATE TABLE [dbo].[SourceTable2](
[Id] [uniqueidentifier] …Run Code Online (Sandbox Code Playgroud) 问题:如何让我的可用性组注册为ag-ewgtest.sql.company.com我的服务器认为自己的给定server.company.com。
设置:我的 SQL Server 2012 可用性组位于多个子网上,类似于这篇 MSDN 博客文章 中的描述。当我进入故障转移群集管理器时,它显示名称解析尚不可用:

然后我右键单击“名称:ag-ewgtest”并选择属性。我勾选了“发布 PTR 记录”,它显示全名是ag-ewgtest.company.com.

我的问题是我只被允许更新 DNS 区域sql.company.com。如果我将 DNS 名称更改为 ,ag-ewgtest.sql.company.com则全名变为ag-ewgtest.sql.company.com.company.com.
我尝试将我的 NIC 更新为:

但并没有什么不同。如何更改我的可用性组尝试注册的子域?
我正在尝试编写一个存储过程,该过程将从临时表中获取新值,将它们合并到一个实际表中,为我提供插入行的 ID,以及与其值匹配的已经存在的行。
现在,从我所看到的来看,MERGE 函数似乎不支持我想要做的事情,除非我做错了(完全有可能,我不是 SQL 专家——.NET)。不管怎样,我今天晚上才真正了解了MERGE,一开始我似乎应该使用它,但它似乎没有我需要的功能,因为我无法获得以前存在的ID,我需要其余的存储过程。我的主要重点是看看我是否可以让它工作,但另一个问题是我需要确保代码处理对将通过 MERGE 运行的存储过程的潜在并发调用。我知道我现在没有锁定在那里,但我只是想让它在这一点上工作。那么,我所拥有的......
DECLARE @Metadata TABLE
(
MetadataId INT PRIMARY KEY IDENTITY(1,1),
MetadataTypeId INT,
MetadataTypeValueId INT
)
INSERT INTO @Metadata
VALUES
(1,23),(2,32),(2,33),(2,43),(1,24),(3,33),(1,20)
--Original Table Data
SELECT * FROM @Metadata
DECLARE @MergeMetadata TABLE
(
MetadataId INT,
MetadataTypeId INT,
MetadataTypeValueId INT
)
INSERT INTO @MergeMetadata (MetadataTypeId, MetadataTypeValueId)
VALUES
(2,32),(2,35),(3,34),(4,1),(1,23)
--Metadata that needs added and/or ID'd if exists
SELECT * FROM @MergeMetadata
DECLARE @FinalMetadata TABLE
(
MetadataId INT,
MetadataTypeId INT,
MetadataTypeValueId INT
)
INSERT INTO @FinalMetadata (MetadataId, …Run Code Online (Sandbox Code Playgroud) 我正在使用 SQL Server 2008 R2。我需要在默认情况下创建一个简单的存储过程,当在 SQL Server 中创建新数据库时。我怎样才能做到这一点?假设要创建的存储过程是
CREATE PROCEDURE [dbo].[Default_SP]
AS
BEGIN
SELECT GETDATE()
END
Run Code Online (Sandbox Code Playgroud)
触发器可以应用于表级别。但这是在数据库创建事件上。我在网上搜索,我找不到答案。
sql-server ×8
alias ×1
backup ×1
bulk ×1
collation ×1
concurrency ×1
dns ×1
import ×1
locking ×1
merge ×1
optimization ×1
postgresql ×1
ssms ×1