我刚刚为一个相当大的数据库(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. 应该不会有问题吧?
非常感谢。
我们有几个 SQL Server 2008 R2 数据库,其中的成员域发生了更改(即它已连接到DOMAINA并且现在位于DOMAINB)。我们有三个数据库,其中数据库的所有者是DOMAINA\User,该数据库不再存在。
我试图登录到SQL Server作为DOMAINB\Administrator和sa和运行以下命令:
ALTER AUTHORIZATION ON DestDB TO sa
Run Code Online (Sandbox Code Playgroud)
错误:
消息 15151,级别 16,状态 1,第 1 行
找不到对象“DestDB”,因为它不存在或您没有权限。
我在(显然不正确的)假设下sa可以在服务器上做几乎任何事情。
我怎样才能取回这些数据库的所有权?
为什么 PostgreSQL 选择大象作为它的标志?从logo wiki 中不清楚。
更新:现在维基更新:) 谢谢!
问题:如何让我的可用性组注册为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 更新为:

但并没有什么不同。如何更改我的可用性组尝试注册的子域?
我需要将 SQL Server 中的查询转换为 SQlite,并且我已将外部应用替换为左外部连接,但是如何限制子查询在这种情况下仅返回 1?以及如何将外部表中的引用值传递到子查询中?
我强调了我无法将其转换为 Sqlite 的事情,有人可以给一些建议吗?
SQL 服务器:
SELECT a.id,
a.CodeValue ,
a.TotalAmount ,
InvoiceRevised.RevisedInvoiceId,
InvoiceRevised.BillNumber AS RevisedInvoice,
patientlookup.RegistrationNumber AS RegistrationNumber,
patientlookup.PatientName AS PatientName,
FROM dbo.Invoices a
OUTER APPLY (
SELECT TOP 1 dbo.Invoices.Id AS RevisedInvoiceId,CodeValue AS InvoiceNumber,
dbo.SCSInvoiceRels.CreatedOn AS InvoiceTime,
dbo.Invoices.CreatedBy AS InvoiceCreatedBy,
dbo.Invoices.TotalAmount,dbo.Invoices.Discount,
dbo.Invoices.RoundAmount
FROM Invoices
INNER JOIN dbo.SCSInvoiceRels ON dbo.Invoices.Id = dbo.SCSInvoiceRels.InvoiceId
AND dbo.SCSInvoiceRels.RecordStatus = 1 AND dbo.Invoices.RecordStatus = 1 AND dbo.SCSInvoiceRels.SCDetailId IN (
SELECT SCDetailId FROM dbo.SCSInvoiceRels WHERE InvoiceId = a.id)
) InvoiceRevised …Run Code Online (Sandbox Code Playgroud) 我在我的笔记本电脑上运行 SQL Server 2014 以及大量其他已安装的应用程序,从 Visual Studio 到视频游戏。
这显然不是生产服务器,而是仅用于开发和调试。
我已经编写了一个相当小而简单的数据库,其中包含几十个表和视图 - 我插入了不到 100 行的虚拟数据用于测试。
有一次我不小心创建了一个 100GB+ 的索引,使用了一些格式错误的交叉连接 - 创建这个索引的查询消耗了我的笔记本电脑 (16GB) 中 100% 的内存,这使一切变得缓慢,所以我中止了查询而不是等待它完成,然后立即删除并重新创建整个数据库,并从创建脚本中删除此索引。
但是,从那时起,SQL Server 2014 一直在消耗我所有 16GB 的 RAM,即使查询中止和数据库删除也是如此。
所以我接下来重新启动了我的笔记本电脑,SQL Server 的 RAM 使用量下降到 7GB - 从那时起它一直保持不变,无论我是否删除了所有 5MB 的现有数据库等。
我想让 SQL Server 恢复到合理的内存消耗水平,但我不知道从哪里开始寻找可能的原因。
我知道这是一个非常开放的问题,但我愿意在一些指导下进行跑腿工作。
我只是不知道从哪里开始进行故障排除,因为我自己不是 DBA - 显然 Google 也不知道。:)
我对根据sys.dm_db_index_physical_statsdm 函数返回的 avg_fragmentation_in_percent 选择索引重组/重建索引感到困惑。
Msdn 说:
而且,avg_fragmentation_in_percentvalue 表示索引中存在的逻辑碎片百分比(这是索引的叶页中乱序页的百分比)。
Reorganize of index将始终修复页面的物理顺序。所以即使 avg_fragmentation_in_percent 大于 30% 我也可以考虑重新组织索引。它将减少索引中的碎片百分比。
请看下面的例子
SELECT
database_id, object_id,
avg_fragmentation_in_percent,
avg_page_space_used_in_percent,
page_count,
avg_fragment_size_in_pages
FROM
SYS.Dm_db_index_physical_stats (Db_id('BPIGTN_GAL_APP_TST'), Object_id('NM_PPA_PROJECTION_MASTER'), NULL, NULL, 'SAMPLED')
Run Code Online (Sandbox Code Playgroud)
结果
Database_id Object_id avg_fragmentation_in_percent avg_page_space_used_in_percent page_count avg_fragment_size_in_pages
37 913490383 99.36 60.15 314 1.003
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,我们可以看到 99% 的平均值,fragmentation这意味着索引有更多的逻辑碎片(页面无序更多)。
所以我要重新组织我们在上图中看到的索引。
请查看下面的示例以进一步了解。
ALTER INDEX PK_NM_PPA_PROJECTION_MASTER_PROJECTION_DETAILS_SID_RS_CONTRACT_SID ON NM_PPA_PROJECTION_MASTER REORGANIZE
GO
SELECT database_id,
object_id,
avg_fragmentation_in_percent,
avg_page_space_used_in_percent,
page_count,
avg_fragment_size_in_pages
FROM SYS.Dm_db_index_physical_stats (Db_id('BPIGTN_GAL_APP_TST'), Object_id('NM_PPA_PROJECTION_MASTER'), NULL, NULL, 'SAMPLED')
Run Code Online (Sandbox Code Playgroud)
结果
Database_id Object_id avg_fragmentation_in_percent …Run Code Online (Sandbox Code Playgroud) 我对使用 Waits 和 Queues 进行性能调整还很陌生 - 很吸引人,但也不总是那么直观......
现在,我的一个客户有一个 SQL Server 2008 64 位企业版,目前分配给它 16 GB 的 RAM,在具有 64 GB RAM 的物理服务器上运行(在同一台上还有其他和更改的 SQL Server 实例)机)。
他正在运行的这个应用程序是一个 Sharepoint 2010 解决方案,在大多数情况下,它的性能 - 很好 - 对于 Sharepoint 站点来说还可以。除了搜索,这是非常缓慢的。
现在从 SQL Server 的角度来看,我已经观察了几天的等待统计数据,前三种等待类型是:
1) CXPACKET 约为 49%
2) SOS_SCHEDULER_YIELD 约为 10.5%
3) OLEDB 约为 9.5%
这似乎非常一致——随着时间的推移没有大的变化。
信号等待时间极短,所以这似乎并不表示 CPU 压力。那么是什么导致了这种模式——我们可以做些什么来 (a) 找到更多相关信息,或 (b) 找到加快速度的解决方案?
有什么想法吗?见解?想法?我对任何事情都持开放态度——我们不能改变的是基本架构(单独的 SQL Server 实例,在物理服务器之间移动——以及基于 Unix 的 SAN,它不能保证数据和登录到单独的物理磁盘上的分离)
再说一遍:这是一个SharePoint网站 …
我什至不确定这个问题是否有必要,但我很想知道每个人的想法。我在同一台服务器上有两个数据库,dbFoo、dbBar。dbFoo 有下表,请注意这是一个简单的例子,语法可能不正确,因为我很匆忙,对潜在问题的答案更感兴趣,然后是代码......
CREATE TABLE dbo.CodeNumbers(
CodeNumbersID INT IDENTITY (1,1) NOT NULL PRIMARY KEY,
CodeValue VARCHAR(30) NOT NULL
IsUsed BIT NOT NULL DEFAULT(0)
);
Run Code Online (Sandbox Code Playgroud)
dbo.CodeNumbers使用每月提供的 CSV 填充,您选择的导入方法已经写入以将它们放入那里。我们从来没有得到重复的代码。
为了论证,让我们假设表中有 10,000,000 行。导入时都遵循以下格式:
1, 'ajdirjfisofklrlfo039402', 0 all the way till
10000000, 'fkeiir9489', 0
Run Code Online (Sandbox Code Playgroud)
现在在 dbBar 我有 2 个存储过程,第一个应该访问 dbFoo 中第一个未使用的代码,将它返回到一个 out 变量中并将其标记为已使用。所以我有类似的东西:
CREATE PROCEDURE GetNextUseableCode
@CodeOut VARCHAR(30) OUTPUT,
@CID INT OUTPUT
AS
SELECT @CID = CodeNumbersID, @CodeOut = CodeValue
FROM dbFoo.dbo.CodeNumbers
WHERE IsUsed = 0
UPDATE dbFoo.dbo.CodeNumbers
SET IsUsed = 1
WHERE CodeNumbersID …Run Code Online (Sandbox Code Playgroud) sql-server ×6
backup ×1
collation ×1
dns ×1
index ×1
memory ×1
permissions ×1
postgresql ×1
sharepoint ×1
sqlite ×1
t-sql ×1
wait-types ×1