我在做一个产品的系统测试,有几个测试严重改变了一个演示数据库的数据。
创建查询的数据非常复杂,这些查询将撤消测试所做的更改;此外,这些测试可能会发生变化。
使用备份/恢复不是一种选择,因为恢复数据库需要 30 秒,这在自动化测试的上下文中太长了。
使用也insert into select很复杂:同样,测试可能会发生变化,并且可能会影响他们现在不影响的表;出于性能原因,以这种方式复制整个数据库也不是一种选择。
Microsoft SQL Server 具有快照功能,但鉴于我在本地主机上没有企业版,我无法使用它。我也不能使用事务,因为系统测试涉及两个应用程序,它们之间有复杂的交互。当然,它们不共享相同的连接。
可以做些什么来快速撤消数据库的最后更改?
为了使问题更容易,
数据库处于受控环境中:
它在本地主机上,所以我是唯一可以访问它的人,
唯一的变化来自系统测试。所有更改都可能(并且预计会)丢失。
可以选择任何恢复模式。
准备(例如某种备份)可能需要很长时间,甚至是一项手动任务,因为它很少执行。重要的是从这一点开始撤销更改的速度,因为它是在每次影响数据库的测试之后完成的。
我使用下面的查询来获取 sql server 中数据库发生的自动增长事件。
DECLARE @trcfilename VARCHAR(1000);
SELECT @trcfilename = path FROM sys.traces WHERE is_default = 1
SELECT COUNT(*)as no_of_autogrowths,
sum(duration/(1000*60)) as time_in_min,
Filename
FROM ::fn_trace_gettable(@trcfilename, default)
WHERE (EventClass = 92 OR EventClass = 93)
GROUP BY Filename
Run Code Online (Sandbox Code Playgroud)
它输出自动增长的数量、自动增长所用的时间和文件的逻辑名称。但我想要文件的物理名称(mdf 和 ldf 文件名)而不是逻辑名称。我不知道是否从 sys.traces 中我会得到物理名称,或者请帮助我用另一种方法来做到这一点。
MySQL是否使用事务forDROP DATABASE...语句(所有表都使用InnoDB引擎)?
基本上我想知道如果我DROP DATABASE...在查询运行时终止查询是否会丢失任何数据?
我已经用表对此进行了测试并且它有效,但我没有足够大的数据库来测试它:
mysql> SELECT COUNT(*) FROM t1;
+----------+
| COUNT(*) |
+----------+
| 10000000 |
+----------+
1 row in set (8.57 sec)
mysql> DELETE FROM t1;
Run Code Online (Sandbox Code Playgroud)
另一个 MySQL 会话:
mysql> SHOW PROCESSLIST;
+-----+------+-----------+------+---------+------+----------+-------------------+-----------+---------------+
| Id | User | Host | db | Command | Time | State | Info | Rows_sent | Rows_examined |
+-----+------+-----------+------+---------+------+----------+-------------------+-----------+---------------+
| 211 | root | localhost | test | Query | 0 | init | SHOW PROCESSLIST | …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个查询来获取表中状态的持续时间。此查询需要在 SQL Server 2008 中工作。
假设我有下表:
Key Value RecordDate
1 1 2012-01-01
2 1 2012-01-02
3 1 2012-01-03
4 5 2012-01-05
5 5 2012-01-05 12:00:00
6 12 2012-01-06
7 1 2012-01-07
8 1 2012-01-08
Run Code Online (Sandbox Code Playgroud)
我想得到以下结果
Value StartDate EndDate Duration
1 2012-01-01 2012-01-05 4 days
5 2012-01-05 2012-01-06 1 days
12 2012-01-06 2012-01-07 1 days
1 2012-01-07 NULL NULL
Run Code Online (Sandbox Code Playgroud)
基本上我想在它改变之前获取值的持续时间。
我正在接近某个地方,但仍然无法弄清楚:
SELECT [Key], [Value],
MIN(RecordDate) OVER(PARTITION BY [Value]) as 'StarDate',
MAX(RecordDate) OVER(PARTITION BY [Value]) as 'EndDate',
DATEDIFF(day, (MIN(RecordDate) OVER(PARTITION BY [Value])), …Run Code Online (Sandbox Code Playgroud) 我有 2 列Name,Passport No.在一个超过 100k 行的表中。
Name Passport No.
KOP A245
COS C990
Run Code Online (Sandbox Code Playgroud)
更新后应该是这个样子。
Name Passport No.
LPQ B356
DPT D001
Run Code Online (Sandbox Code Playgroud)
用数据库中的下一个字符更新当前字符。我不想从表中选择任何东西,我想更新表。
请不要问我为什么。
在最近的一个问题中,服务主密钥保护什么?,建议服务主密钥保护由 加密的数据等ENCRYPTPASSPHRASE()。这是真的?
我有一张名为MyTable. 主键是一个名为 的标识 int 列MyTableID。在MyTableID名为的 PK 列上有一个唯一的聚集索引PK_MyTable。
我注意到IX_MyTable_MytableID该表上有一个额外的非聚集唯一索引,只有一个 column MyTableID,没有其他包含的列。这个索引显然是多余的,但是当我尝试删除它时,我收到一条错误消息:
The constraint 'IX_MyTable_MyTableID' is being referenced by table 'OtherTable',
foreign key constraint 'FK__OtherTable__MyTableID__369C23FC'.
Run Code Online (Sandbox Code Playgroud)
为什么 FK 约束依赖于非聚集唯一索引而不是主键约束?如何更新 FK 以使用聚集 PK 索引而不是其他索引?
作为应用程序数据库设计规范的一部分,我们被要求阻止执行一组直接从 SSMS/osql/sqlcmd 等触发的存储过程;也就是说,它们必须只被允许在应用程序本身内运行。
当我们的团队质疑这是否可行时,我们看到了一个演示,该演示将查询限制在特定系统(实际上它让查询运行,但记录到运行它的表中)。然而,这样做的过程是加密的,所以我们无法知道它是如何完成的。
我们如何做到这一点?
我有一个问题,关于一个问题,它是 70-462 Microsoft 考试的一部分。
我今天有这个问题,我不完全确定正确答案。虽然我确实通过了考试,但我想了解这种情况下的正确解决方案。
如果我没记错问题,您管理的是 2012 SQL Server,要求是将 OLTP 数据库的分钟报告卸载到另一台服务器,并且还能够向辅助数据库添加索引。
问题的答案大致如下:
最初我排除了异步提交选项(延迟)、不同数据中心的同步提交 AG 组(延迟?)、日志传送(延迟)和快照复制选项。
这给我留下了同一个子网上的同步提交 AG 组,或具有事务复制的 SQL 服务器。
基于https://msdn.microsoft.com/en-us/library/ff878253.aspx,我读到如果你想在你的活动辅助节点上建立索引,你必须在你的主要节点中创建它们。我将这个问题解释为要求能够在主服务器上创建索引,而这些索引在主服务器上不存在(包括用于报告的索引,或者其他什么不存在)。
另一个答案,单独指的是 SQL Server,这听起来不像我们要添加“另一台服务器”来卸载工作。
我是否误解了问题/要求?正确答案/解决方案应该是什么?
我应该使用哪种数据类型来存储 11 位数字?它必须存储“0”作为第一个数字。
例如,如果我存储02421402015,它必须显示02421402015。我尝试使用varchar,它显示2421402015.
sql-server ×9
constraint ×1
datatypes ×1
encryption ×1
index ×1
innodb ×1
mysql ×1
primary-key ×1
replication ×1
restore ×1
security ×1
snapshot ×1
trace ×1