小编Nic*_*mas的帖子

是否有工具可以在两个不同的模式之间执行数据比较?

我们正在将我们的数据库迁移到新模式,但想要验证数据是否已正确移动。

如果模式相同,传统的数据比较工具可以比较两个数据库的差异。在我们的例子中,表设计发生了变化,但旧模式中的所有数据都在新模式中,只是稍微移动了一下,我需要确保它是正确的。我们有数千万行,因此手动检查不是一种选择。

是否有任何工具可以帮助进行此类比较?

如果没有,是否有任何库/框架可以帮助启动自定义解决方案的开发?

如有必要,我很乐意使用特定于数据库的解决方案,在这种情况下用于 SQL Server 2008。

我的解决方案:我通过VIEW在旧数据库上创建一个与新数据库表具有相同字段的每个表来比较两个数据集。

然后,我使用此处描述的技术比较数据:在 SQL Server 中比较两个表的最短、最快和最简单的方法:UNION!

我在这次迁移中很幸运,因为整体表结构类似于旧数据库,字段从一个表移动到另一个表,删除或添加。在删除和添加的情况下,没有什么可比较的,对于已移动或聚合的字段,我会在视图中进行计算以提供正确的信息进行比较。

UNION比较显示我只能用不同的行,所以只要数据是正确的,我得到一个空的结果集。

sql-server-2008 tools sql-server

11
推荐指数
3
解决办法
8368
查看次数

SQL 2005:我们能否确定重建索引维护作业可以使数据库日志文件增长多少?

在 SQL Server 2005 上,如果所有数据库都处于完整模式(每小时事务日志备份),是否可以确定重建数据库的所有索引是否可以增加数据库的日志文件?它可以增长多少?

如果没有直接的答案,那么任何方向都将不胜感激。

提前致谢。

index sql-server-2005 maintenance

10
推荐指数
2
解决办法
523
查看次数

av$ view 和它的 dba_ 等价物有什么区别?

v$视图与其dba_等价物之间的一般区别是什么?举个例子来说,v$tablespacedba_tablespaces

oracle metadata view

10
推荐指数
1
解决办法
8046
查看次数

如何监视每个时间跨度每个存储过程的调用计数?

为了诊断一些性能问题,我想更好地了解与系统性能相比调用某些过程的次数。有没有办法获得在特定时间跨度内每个过程被调用的次数?

performance monitoring sql-server

10
推荐指数
1
解决办法
2万
查看次数

将某些阿拉伯字符视为相同

在阿拉伯语中,我们有这样的字符?(alef) 和 ? (alef 与 hamza)。

用户可以互换地编写它们,我们希望可以互换地搜索它们。SQL Server 将它们视为单独的字符。如何让 SQL 将它们视为相同的字符?

我想更换任何?(alef 与 hamza)与 ? (alef) 在插入时,但我们有很多阿拉伯语的替代品,不仅仅是 ? (alef) 和 ? (alef 与 hamza)。

我试过了Arabic_CI_ASArabic_CI_AI但这并不能解决问题。

这是一个重新生成问题的脚本:

CREATE TABLE [dbo].[TestTable] (
    [ArabicChars] [nvarchar](50) NOT NULL,

    CONSTRAINT [PK_TestTable] PRIMARY KEY CLUSTERED 
    (
       [ArabicChars] ASC
    )
) ON [PRIMARY];


INSERT INTO TestTable values (N'????');
INSERT INTO TestTable values (N'????');

SELECT * 
FROM TestTable 
WHERE ArabicChars like N'?%';
Run Code Online (Sandbox Code Playgroud)

结果是:

ArabicChars 

????

(1 row(s) affected)
Run Code Online (Sandbox Code Playgroud)

所需的结果将是我们插入的两行。

sql-server collation

10
推荐指数
1
解决办法
9347
查看次数

在此表中插入数字时如何保留前导零?

我在一个表中插入了两条记录。

create table num(id int)
insert into num values(0023)
insert into num values(23)
select * from num
Run Code Online (Sandbox Code Playgroud)

当我查询它们时,它们都显示为23. 这意味着 SQL Server 忽略前导 0。这背后的机制是什么?我如何让 SQL Server 在我插入它们时返回值(即002323)?

sql-server-2008 sql-server

10
推荐指数
2
解决办法
11万
查看次数

为什么这个完全外部联接不起作用?

我之前使用过完全外部联接来获得我想要的结果,但也许我不完全理解这个概念,因为我无法完成应该是简单的联接。

我有 2 个表(我称之为 t1 和 t2),每个表有 2 个字段:

t1

Policy_Number Premium
101             15
102              7
103             10
108             25
111              3
Run Code Online (Sandbox Code Playgroud)

t2

Policy_Number   Loss
101              5
103              9
107              20
Run Code Online (Sandbox Code Playgroud)

我想要做的是从两个表以及 Policy_Number 中获取 Premium 和 Sum of Losses 的总和。我正在使用的代码是:

select sum(premium) Prem_Sum, sum(Loss) Loss_Sum, t1.policynumber
from t1 full outer join t2 on t1.policynumber = t2.policynumber
group by t1.policynumber
Run Code Online (Sandbox Code Playgroud)

上面的代码将返回正确的总和,但它会将在“NULL”policy_number 下没有 policy_number 匹配的所有记录分组。

我希望我的结果看起来像这样

Policy_Number    Prem_Sum    Loss_Sum
    107            NULL        20
    111              3        NULL
    101             15          5
Run Code Online (Sandbox Code Playgroud)

等等.....

我不想要显示 NULL policy_number …

sql-server-2008 join sql-server

10
推荐指数
1
解决办法
4万
查看次数

将古老的 Oracle 数据库读入当前的 Oracle 版本

一台装有 Oracle 8i 的旧电脑已经死了。我们有数据库的每日备份(C:\oradata)。我们无法在任何地方安装这个旧的 Oracle 版本,因为我们没有它的安装 CD。

我们可以使用例如 Oracle Express 读取此数据库吗?如果是,如何?

oracle upgrade oracle-8i

10
推荐指数
1
解决办法
162
查看次数

SQL Server 统计信息是否存储在数据库或缓冲池中?

只是想知道统计数据是否保存在数据库中而不是内存中?如果我将数据库从生产服务器备份/恢复到开发服务器,它是否会保留相同的统计信息,以便在开发服务器上执行计划不会有太大不同?

sql-server statistics execution-plan

10
推荐指数
2
解决办法
3372
查看次数

如何帮助 SQL Server 识别我的索引视图列不能为 NULL?

我在 SQL Server 2008 中定义了以下索引视图(您可以从 gist下载工作架构以进行测试):

CREATE VIEW dbo.balances
WITH SCHEMABINDING
AS
SELECT
      user_id
    , currency_id

    , SUM(transaction_amount)   AS balance_amount
    , COUNT_BIG(*)              AS transaction_count
FROM dbo.transactions
GROUP BY
      user_id
    , currency_id
;
GO

CREATE UNIQUE CLUSTERED INDEX UQ_balances_user_id_currency_id
ON dbo.balances (
      user_id
    , currency_id
);
GO
Run Code Online (Sandbox Code Playgroud)

user_idcurrency_idtransaction_amount都定义为 中的NOT NULLdbo.transactions。但是,当我查看 Management Studio 的对象资源管理器中的视图定义时,它在视图中将balance_amount和都标记transaction_countNULL可列。

我查看了几个讨论,是其中最相关的一个,建议对函数进行一些改组可能有助于 SQL Server 识别视图列始终为NOT NULL. 但是,在我的情况下不可能进行这种改组,因为在索引视图中不允许 …

sql-server-2008 null constraint view

9
推荐指数
2
解决办法
4833
查看次数