我们一直在保存其中一台生产服务器的备份(实际上是一个 Always On 可用性组)
sqlcmd -E -S $(ESCAPE_SQUOTE(SRVR)) -d master
-Q "EXECUTE dbo.DatabaseBackup
@AvailabilityGroups = 'SQLAG',
@URL = 'https://MYCOMPANYbackups.blob.core.windows.net/SQLMAINSERVER-datafiles-full',
@Credential = 'SQLAzureCredential',
@BackupType = 'FULL',
@Compress = 'Y',
@Verify = 'Y',
@LogToTable = 'Y'" -b
Run Code Online (Sandbox Code Playgroud)
这是我在尝试连接到 Azure 时看到的:我的存储帐户是什么?

我有一份工作,我计划向我发送一封关于服务器上所有备份的电子邮件。收集有关备份的信息并发送电子邮件的脚本在这里。
电子邮件告诉我备份在哪里。例如:
我如何才能访问备份文件?
编辑:
大卫布朗的回答让我明白了,谢谢大卫。
我只是在这里添加了一组将我带到备份的步骤(在成功连接到 azure 之后)。
01 - 点击 Blob
02 - 选择其中一个容器
03 - 文件将在那里 - 准备下载
这篇文章也很有趣:
sql-server backup availability-groups sql-server-2016 azure-blob-storage
我对我们的数据库拥有完全的管理员权限,因此可以查询和查看视图定义。但是,我想在 JDBC Jenkins 作业魔术中使用只读用户查询视图。问题:与我的管理员用户不同,只读用户看不到视图的代码/定义。
当我担任管理员时,此查询为我提供了所有视图所需的所有视图定义和元数据:
SELECT name AS VIEW_NAME,
definition,
create_date,
modify_date
FROM [my_database].[sys].[all_views]
JOIN [my_database].[sys].[sql_modules]
ON [my_database].[sys].[all_views].object_id = [my_database].[sys].[sql_modules].object_id
Run Code Online (Sandbox Code Playgroud)
结果,当以管理员身份执行查询时,我得到如下条目:
name | definition | create_date | modify_date
sample_view | SELECT * FROM bla | 01.01.2017 | 02.01.2017
Run Code Online (Sandbox Code Playgroud)
然而,当我用我的只读用户做这件事时,我得到了
name | definition | create_date | modify_date
sample_view | null | 01.01.2017 | 02.01.2017
Run Code Online (Sandbox Code Playgroud)
在这里你可以看到我对只读用户的权限配置。尽管我已授予他必要的权限,但用户在结果集中看不到视图定义。
更奇怪的是,在允许用户执行 SELECT 和 VIEW 定义语句并保存配置之后,SELECT 和 VIEW DEFINITION 的第二个条目被添加到配置表中。
我有一个 SQL Server 2016 数据库,并且配置了内存表。我想删除此配置,然后删除该表。当我想删除该文件和文件组时,出现以下错误。
USE [InMem_Test]
GO
ALTER DATABASE [InMem_Test] REMOVE FILE [InMemFile]
GO
ALTER DATABASE [InMem_Test] REMOVE FILEGROUP [InMemFileGroup]
GO
Run Code Online (Sandbox Code Playgroud)
消息 41802,级别 16,状态 1,第 3 行无法删除最后一个内存优化容器“InMemFile”。消息 5042,级别 16,状态 11,第 5 行无法删除文件组“InMemFileGroup”,因为它不为空。
我们有一个包含超过 300 列的表的第三方数据库,在 SQL Server 2012 中,我们收到一个错误,提示我们超出了允许的最大 8060 字节。我想知道升级到 SQL Server 2016 是否会有所帮助。
SQL Server 2016 是否也有 8060 字节的限制?是否可以在 SQL Server 2016 中拥有更多列而不会遇到以下错误?
错误:已创建表“X”,但其最大行大小超过了允许的最大值 8060 字节。如果结果行超过大小限制,则对该表的 INSERT 或 UPDATE 将失败。
我熟悉 SQL Server 的数据库加密选项,例如 TDE,并确保正确加密和保护备份/备份位置。
我正在为一个新客户做一些工作,他要求我详细说明端到端加密的选项,换句话说,以确保从数据库服务器发送到应用程序服务器的数据在途中保持加密并且无法被拦截(或者更确切地说,解释) 通过任何类型的数据包监控。
我知道使用 SSL 证书来加密与数据库的连接,尽管我很少配置它。我真的不知道这是否是端到端加密的合适选项,因为这肯定不能单独使用 SQL Server 进行配置?
在我看来,应用程序端或网络路由上必须有一些东西可以实现这样的端到端加密?
我对网络安全的了解基本上仅限于防火墙规则和一般路由,因此我正在寻找可供我进一步研究或付诸实践的选项。
我担心这个问题会被关闭,因为它是基于意见的,所以我真的要求在 SQL Server 本身(或在 DBA 的职权范围内)提供可靠的选项来配置端到端的数据加密。
我正在处理以下场景,其中我的时间数据属于island 和 gaps。每隔一段时间,我需要根据事件发生的时间将落入现有间隙内的事件与其最近的岛屿相关联。
为了演示,假设我有以下定义我的时间段的数据:
这个数据是除了哪个ID之间存在间隙连续的2和7,对于所述时间段2017-07-26 00:03:00通过2017-07-26 00:07:00。
为了确定最近的岛屿,我目前将差距分为两个时期,如下所示:
如果我有一个属于这个差距的事件,GapWindowStart/End时间将决定我需要将事件与哪个岛相关联。因此,例如,如果我有一个发生在 的事件2017-07-26 00:03:20,我会将该事件与 ID 相关联,2相反,如果我有一个事件发生在 ,2017-07-26 00:05:35我会将该事件与 ID 相关联7。
最有效的方法,我已经能够编写我的方法,迄今为止,是组装使用的空白伊茨克奔甘的从SQL Server MVP深海潜水书第3解决方案通过ROW_NUMBER窗口函数,然后每一个分裂的差距CROSS APPLY作用的语句就像一个简单的UNPIVOT操作。
这是我用来组装最近的岛屿集的方法的db<>fiddle计划。
确定最近的岛屿后,我使用事件的事件时间来确定与所述事件相关联的最近岛屿。因为这些岛屿全天都在变化,所以我无法制作静态主表,而是必须在遇到事件时在运行时构建所有内容。
这是一个db<>fiddle 计划,显示应该针对随机事件时间使用什么 NearestIsland 值。
对于通常会落入间隙的给定事件,是否有更好的方法来找出最近的岛屿?例如,是否有更有效的方法来识别间隙或更有效的方法来识别最近的岛屿?我什至以最好的逻辑方式来解决这个问题吗?这个问题没有什么重要的,但我总是试图弄清楚是否有一种“更好”的方法来解决问题,我认为这个问题有助于一些创造力,所以我很想看到其他高性能的选择。
我目前使用的环境是 SQL 2012,但我们很快就会迁移到 SQL 2016 环境,所以我几乎可以接受任何东西。
第二个 db<>fiddle 链接的代码如下:
-- Creation of Test Data
CREATE TABLE #tmp
( …Run Code Online (Sandbox Code Playgroud) 我在同一台服务器上有发布者和订阅者。我需要将订阅者的数据库移动到另一台服务器但不创建新快照。我试过这个步骤:
然后我启动了代理并收到错误 20053(服务器未注册)。我通过将链接服务器添加到新服务器来修复它
之后,我收到错误 20044(订阅已过时或不存在),但订阅存在。
我做错了什么或者我错过了任何步骤?
我不能使用备份初始化,因为订阅者有一些额外的表、视图、例程。谢谢
replication sql-server transactional-replication sql-server-2016
PhoneSQL Server 在唯一索引中将它们视为相同的下面插入的值是什么意思?
CREATE TABLE Phone
(
Id int identity(1, 1) primary key,
Phone nvarchar(448) not null
)
go
create unique index IX_Phone on Phone(Phone)
with (data_compression = page);
go
insert into Phone Values ('?281/?263-?8400');
insert into Phone Values ('?281/?263-?8400');
select * from Phone;
drop table Phone;
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息:
消息 2601,级别 14,状态 1,第 13 行无法在唯一索引为“IX_Phone”的对象“dbo.Phone”中插入重复的键行。重复的键值为 (?281/?263-?8400)。
希望有人可以帮助我了解 SQL Server 如何使用 stats 来估计记录数。
测试脚本
USE [tempdb]
GO
CREATE TABLE t1
(
a INT NOT NULL,
b INT NOT NULL,
c INT CHECK (c between 1 and 50),
CONSTRAINT pk_a primary key(a)
);
GO
INSERT INTO t1(a,b,c)
SELECT number, number%1000+1, number%50+1
FROM master..spt_values
WHERE type = 'P' AND number BETWEEN 1 and 1000;
GO
CREATE STATISTICS s_b ON t1(b);
CREATE STATISTICS s_c ON t1(c);
GO
Run Code Online (Sandbox Code Playgroud)
示例查询
DECLARE @c INT=300
SELECT * FROM t1 WHERE b>@c
SELECT * FROM …Run Code Online (Sandbox Code Playgroud) 当 SQL Server 使用 SQL Launchpad 启动外部运行时(例如 R 或 Python)时sp_execute_external_script,外部运行时进程的生命周期是多少?
每个sp_execute_external_script脚本执行是否都有自己的外部流程实例,或者外部流程是否会一直存在,直到它在一段时间内处于非活动状态(例如,如果我使用相同的 SQL 会话执行以相同语言编写的另一个脚本,则现有流程可能会被重用) )?
sql-server ×10
sql-server-2016 ×10
backup ×1
encryption ×1
python ×1
r ×1
replication ×1
ssms ×1
unicode ×1
view ×1