我想试验 3 个大型数据库管理系统。为此目的,为每个数据库使用相同的数据库(相同的表等)会很酷。
在哪里可以找到为 MySQL、MSSQL 和 Oracle 创建相同测试数据库的 sql 脚本?
我在任何地方都找不到关于此的明确资源,所以希望大师可以在这里给我一个答案。
我有一个非常大的表,我们必须向其中添加一列。聚集索引非常碎片化,我想做一个ALTER INDEX REBUILD清理它。
我通常也做一个 ALTER TABLE REBUILD在更改列时,因为这会清除该操作中的任何指针或拆分。
由于我们谈论的是聚集索引(本质上是表),所以我是否需要同时执行这两项操作?
我的怀疑是ALTER INDEX REBUILD在集群上不会更新所有的东西ALTER TABLE,但我也担心ALTER TABLE不会清理索引碎片。
我希望向我的 SSAS Cube (SSAS 2012) 添加一个计算,该计算将显示当前成员与该石斑鱼中所有其他成员的相对排名,而无需提前指定石斑鱼。
例如,假设我已经有一个Efficiency定义为 $$/hour 的计算。
我还想添加一个Efficiency Rank计算,它会告诉我当前成员在它设置中的相对位置。
我试过的语法是
RANK([Measures].[Efficiency].CurrentMember, [Measures].[Efficiency])
Run Code Online (Sandbox Code Playgroud)
我意识到这是不正确的。
我似乎无法在其他任何地方找到这方面的指南,所以我希望有一些既定的最佳实践或模式,因为这似乎是一个相对常见的业务需求。
我正在将存储过程从 Sybase 15 移植到 SQL Server 2008。
在 Sybase 中,此语句通过向 syslogins.pwdate(密码上次更改的日期)添加天数来计算到期日期,并且工作正常:
SELECT @l_pwd_date = dateadd( day, @l_pwd_max_expire, pwdate)
FROM master.dbo.syslogins
WHERE name = @v_user
Run Code Online (Sandbox Code Playgroud)
...但是在 SQL Server 2008 中尝试编译时抛出此错误:
消息 207,级别 16,状态 1,第 21 行无效的列名“pwdate”。
syslogins 在 SQL Server 2008 中不再包含该列 pwdate。
有谁知道我在哪里可以找到 SQL Server 2008 中的等效列或找到登录密码上次更改日期的解决方法?
我们正在 MSSQL 2008 R2 标准中创建一个数据库,我们将在其中存储大量记录。我们估计每年在一张表中有 2 亿多条记录,我们主要是在数据上进行极少更新或删除的插入。它是一个数据存档系统,我们每天都在其中插入历史记录。我们将根据用户请求生成关于此历史记录的不同类型的报告,因此我们有一些担忧并需要技术投入和建议。
data-warehouse database-design sql-server database-recommendation
我是 DW 设计的新手,正在研究 DW 以对某些 IT 基础架构进行建模。
此时的主要问题/问题是如何对驱动信息建模。
我们将收集文件和文件夹的汇总数据,以及物理驱动器上的单独数据。驱动器信息将至少包括总空间和可用空间,并且每周更新数次。
需要回答的业务问题之一是驱动器的使用随时间的变化趋势如何。驱动器信息也将用于向下到文件/文件夹级别的层次结构中。
我现在可以看到的选项是:
DRIVE作为维度 实施
DRIVE作为事实表实施
Drive将数据映射回特定的服务器或计算机。可以将事实表用作层次结构中的中间级别吗?我不认为是。实施DRIVE既是事实和维度
我有一个存储过程,用于查询用于在我们的系统中分配工作的繁忙队列表。有问题的表在 WorkID 上有一个主键,没有重复项。
查询的简化版本是:
INSERT INTO #TempWorkIDs (WorkID)
SELECT
W.WorkID
FROM
dbo.WorkTable W
WHERE
(@bool_param = 0 AND
((W.InProgress = 0
AND ISNULL(W.UserID, -1) != @userid_param
AND (@bool_filtered = 0
OR W.TypeID IN (SELECT TypeID FROM #Types AS t)))
OR
(@bool_param = 1
AND W.InProgress = 1
AND W.UserID != @userid_param)
OR
(@Auto_Param = 0
AND W.UserID = @userid_param)))
OR
(@bool_param = 1 AND W.UserID = @userid_param)
OPTION
(RECOMPILE)
Run Code Online (Sandbox Code Playgroud)
该#Types表在过程中较早地填充。
正如我所说,WorkTable很忙,有时在此查询运行时,我怀疑其中一条记录正在从一组过滤器移动到另一组过滤器WHERE。具体来说,当有人开始处理一个项目,并且W.InProgress …
今天早上我的合并复制工作正常。从一两个小时前开始,我的同步状态窗口一直显示此消息:
线程 ID 3108 将等待 15 秒,然后重试发布者“MSI-SQL-MAS01”上的查询。
谁能告诉我这是怎么回事?该数据库大小为 500Gb,而且使用率也很高。但是,复制必须工作,我们需要保持订阅者处的数据库同步。
这也是我在一分钟左右后看到的:
在发布者 'MSI-SQL-MAS01' 上执行的查询失败,因为连接被选为死锁的受害者。如果在合并过程进行内部重试后仍然看到此错误,请重新运行合并过程。
就像我刚才说的,今天早上复制工作正常。我还像建议的错误一样重新启动了合并代理,但没有结果。
我也试过
更新 sysmergepublications 集 [generation_leveling_threshold] = 0
在订阅者和发布者数据库中,但似乎没有运气……有时也会出现以下错误:
合并进程正在重试对文章“xx”所做的失败操作 - 原因:“合并进程无法同步行。”。
提前致谢。
我再也看不到我以前的错误了。我现在唯一得到的是:
“合并进程正在重试对文章 'xx' 进行的失败操作 - 原因:'合并进程无法同步该行。'。”
探查器对我来说毫无意义。我没有看到任何相关信息。
如果我重新初始化订阅,它会做什么?我希望我不需要为此创建新快照,因为此时这是不可能的。数据库大小超过 500Gb,快照需要 9 多个小时才能完成。数据库一直在生产中并且使用非常频繁,因此锁定数据库以创建快照实际上是行不通的。
好吧,这就是我在冲突查看器中看到的:
'master_server' 和 'slave_server' 都更新了同一行。解析器选择来自“master_server”的更新作为获胜者。
当我们的应用程序连接到主服务器时,如何在主服务器和从服务器上更新同一行?看起来有些东西正在用不同的内容更新两台服务器上的同一行并导致合并代理崩溃?
我在 SSAS 2012 中有一个大约有 30 个维度的多维数据集,其中一个是Company.
该Company维度包含公司列表,多维数据集中有数百家公司。我们的安全模型要求用户只能Company看到分配给他们的那些值。
在我们的SQL Server环境中,我们控制通过一系列的功能,此访问JOIN中编VIEW秒。这些函数返回一个列出所有Company值的表,用于过滤结果。
例如:
CREATE VIEW dbo.FakeView
AS
SELECT d.*
FROM FunctionToGetAccess(SYSTEM_USER) f
INNER JOIN DataTable d
ON d.CompanyID = f.CompanyID
Run Code Online (Sandbox Code Playgroud)
有没有办法将这个逻辑或类似的逻辑移植到 SSAS 中的维度级别安全性?
一些注意事项:
最近几个月我发生了三起事件,其中表中的记录已被删除或整个表中的值更新为零。我们有一个由四人组成的团队,他们拥有权限并负责更新本可以执行此操作的数据库。令人失望的是,没有人承认进行了这些更改。
展望未来,我希望能够记录这些交易。我想知道其他人用什么来跟踪这些变化?他们使用跟踪更改的软件还是创建存储过程或跟踪文件?如果有人在他们的设施中设置了这个,我想知道他们使用什么。跟踪文件确实有我想要的信息,例如登录名机器号和 sql 语句,因此如果我提前设置它们,它将为我提供信息。
当这些更改发生时,我有数据库和事务日志的副本。我能用这些旧文件做些什么来帮助追查罪魁祸首吗?预先感谢任何回复的人。我们使用的是 SQL Server 2005。
sql-server ×6
dimension ×2
ssas ×2
audit ×1
dml ×1
duplication ×1
mdx ×1
merge ×1
mysql ×1
optimization ×1
oracle ×1
replication ×1
security ×1
sybase ×1