我正在设计一个过程来测试我的 postgresql 10.8 备份,方法是将它们恢复到一次性虚拟机中的随机时间点。不过,我一直无法完全自动化该过程。我在官方文档的第 8 步(第 25.3.4 节)被阻止
- 启动服务器。
执行pg_ctl startover ssh 时,命令会挂起,直到被杀死。如果我直接通过 ssh 连接到 VM 并执行pg_ctl start,则命令会按预期快速返回。
2012 年的这个帖子似乎描述了一个类似的场景。在我的情况,不过Postgres的过程也即使当它是挂呼叫会话被杀死成功启动(可能是9.0.5和10.8之间虽然有所改善?)。
这个 github 问题似乎相关,但遗憾的是,通过用一种我不知道的语言进行了长时间的重写“解决了”,并最终得出结论,它是pg_ctl二进制文件中的一个错误。
如何自动执行第 8 步,以便我可以继续对备份媒体进行后续验证测试?
这是我需要破解的二进制文件中的一个突出错误吗?或者我错过了一个明智的实施?
我们希望在 SQL Server 2016 中实现时态表。我们正在创建一个数据仓库并开发类型 2 缓慢变化的维度表。
对于 BeginDate,我们希望它取决于交易日期而不是当前的 getdate 时间。我们正在重新处理交易历史记录。下面的示例中,客户具有健身房或银行状态,并且根据交易日期从不活动状态变为活动状态或待处理状态。
我们目前有这个。
CREATE TABLE dbo.Department
(
CustomerId int primary key,
MembershipStatus int,
TransactionDate datetime
);
Run Code Online (Sandbox Code Playgroud)
我们想创建一个这样的表。
CREATE TABLE dbo.DepartmentHistory
(
CustomerId int primary key,
MembershipStatus int,
TransactionDate datetime,
BeginDatetime datetime,
EndDatettime datetime
);
Run Code Online (Sandbox Code Playgroud)
示例用法如下:
+------------+--------+------------+---------+
| 客户 ID | 状态 | 开始日期 | 结束日期 |
+------------+--------+------------+---------+
| 1 | 普 | 2018 年 3 月 5 日 | 空|
+------------+--------+------------+---------+
这是我的 XAMPP 控制面板的屏幕截图:
这是我的错误日志:
2019-11-27 7:54:14 0 [Note] InnoDB: Mutexes and rw_locks use Windows interlocked functions
2019-11-27 7:54:14 0 [Note] InnoDB: Uses event mutexes
2019-11-27 7:54:14 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
2019-11-27 7:54:14 0 [Note] InnoDB: Number of pools: 1
2019-11-27 7:54:14 0 [Note] InnoDB: Using SSE2 crc32 instructions
2019-11-27 7:54:14 0 [Note] InnoDB: Initializing buffer pool, total size = 16M, instances = 1, chunk size = 16M
2019-11-27 7:54:14 0 [Note] InnoDB: Completed initialization of buffer …Run Code Online (Sandbox Code Playgroud) 给定一个表格...
create table dbo.FilterIDXTest (
id int not null identity primary key clustered,
_bigint bigint,
_varchar10 varchar(10),
_varchar20 varchar(20),
_guid uniqueidentifier
);
go
create unique index uq_FilterIDXTest
on dbo.FilterIDXTest ( _varchar10, _varchar20 )
include ( _guid )
where _bigint is not null
and id > 5;
go
Run Code Online (Sandbox Code Playgroud)
...在什么(如果有)目录视图(或其他格式良好的参考对象)中可以WHERE定位和严格识别子句中的列名称?
sys.indexes可以查看提醒我们的filter_definition是([_bigint] IS NOT NULL AND [id]>(5))。
sys.index_columns可以查看ON和INCLUDE列,但仅列出原始CREATE INDEX命令中的 5 列中的 3 列。filter_predicate此处未找到这些列。
我必须假设filter_predicate在某个阶段对依赖项进行了严格检查,因为sp_rename …
我们都知道SSRS(SQL Server Reporting Services)是读取数据的。
但是,SSRS 是否可以用于更新行或插入行,是否应该使用?
我在这里看到资源,您可以在其中获取用户输入参数并更新行。只是询问是否建议/允许以这种方式使用该工具。微软是否反对这样做?
资源说明:
我创建了一个临时表并插入了如下所示的值。
create table #temp( val int );
insert into #temp values(333);
insert into #temp values(222);
insert into #temp values(111);
Run Code Online (Sandbox Code Playgroud)
在查询下面的 select 语句时,我得到了 333 作为答案。
Select *
from #temp a
Where 1 =(
Select COUNT(VAL)
from #temp b
where a.val <= b.val
);
Run Code Online (Sandbox Code Playgroud)
结果:
val
333
Run Code Online (Sandbox Code Playgroud)
您能否帮助我了解 SQL Server 是如何使用此解决方案的。
我很懒惰,宁愿参数化一次(以获得名称的 object_id)并Invoke-SqlCmd用于其余工作。
给定一系列用于处理任意服务器对象的函数,下面的测试是否足以确认 CmdletBinding 输入参数Int32防止通过用户提供的方式注入$object_id?
function foo {
[CmdletBinding()]Param(
[Int32]$object_id
)
$query = "select type_desc from sys.objects where object_id = $object_id;"
Invoke-Sqlcmd -ServerInstance "localhost" -Database "tempdb" -Query $query
}
foo 3
foo "0 union all select name from sys.syslogins where sid = 0x01"
foo $null
foo ([math]::Pow(2,31)+1)
foo @(1,2)
Run Code Online (Sandbox Code Playgroud) 我在数据库上启用了查询存储。我有一个要跟踪的特定查询。我有很多关于 sp_BlitzCache 查询的详细信息(如 SQL 文本、SQL 句柄、SQL 哈希、计划缓存句柄/哈希等)。
我是否可以使用来自 sp_BlitzCache 的信息搜索查询存储以跟踪那里的查询?我想强制执行特定的执行计划,因为查询会遇到参数嗅探问题。
我似乎在这个光标中犯了一个错误,我似乎无法弄清楚我做错了什么。
我已经确认select拉回了 2 行。但是当我将它传递到游标中选择出现字符串时,我可以提取我需要的确切值。这两行看起来像下面这样......
|DATAIDONTWANT|...|DATAIDONTWANT|<|1|DATAIDONTWANT|<|2|DATAIDONTWANT|...|
|DATAIDONTWANT|...|DATAIDONTWANT|<|1|DATAIDONTWANT|<|2|DATAIDONTWANT|...|
Run Code Online (Sandbox Code Playgroud)
光标似乎抓住了第一行并不断循环,永远不会进入下一行或结束程序。
declare
@clobstringP varchar(max),
@clobstring varchar(max);
declare SevenCursor cursor for
select [value] as ClobP
from string_split(@clobstring, '>')
where value like '%<|2|%';
open SevenCursor;
fetch next from SevenCursor into @clobstringP;
while @@FETCH_STATUS = 0
begin
insert into [database].dbo.tablestuff ( ValueP )
select file387
from (
select
RowId387 = row_number() over( order by ( select 1 ) )
,file387 = [value]
from string_split(@clobstringP, '|')
) a
where a.RowId387 = 6;
end;
close SevenCursor;
deallocate …Run Code Online (Sandbox Code Playgroud) 每当我需要从表中返回随机记录并且性能很重要时,而不是:
SELECT column FROM table ORDER BY random() LIMIT 1;
Run Code Online (Sandbox Code Playgroud)
我经常做:
SELECT column FROM table TABLESAMPLE BERNOULLI(1) LIMIT 1;
Run Code Online (Sandbox Code Playgroud)
这速度快多了,但似乎不是很随机?看起来重复使用此方法时会返回很多相同的记录。是我一个人的问题,还是这种方法的随机性要低得多(因此用处不大)?
sql-server ×5
cursors ×1
metadata ×1
mysql ×1
postgresql ×1
powershell ×1
query ×1
query-store ×1
restore ×1
shutdown ×1
ssh ×1
ssrs ×1
t-sql ×1