AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-2718

Jon Seigel's questions

Martin Hope
Jon Seigel
Asked: 2014-01-17 09:49:34 +0800 CST

为什么不应该始终将预散列密码与 CREATE LOGIN 一起使用?

  • 4

(对于这个问题,假设我只需要支持 SQL Server 2008 及更高版本。或者为了让这个问题过时,比如说最近的、当前的和近期的版本。)

该声明的文档CREATE LOGIN说(强调我的):

HASHED 仅
适用于 SQL Server 登录。指定在 PASSWORD 参数之后输入的密码已经过散列。如果未选择此选项,则作为密码输入的字符串在存储到数据库之前会经过哈希处理。此选项应仅用于将数据库从一台服务器迁移到另一台服务器。不要使用 HASHED 选项来创建新的登录。HASHED 选项不能与 SQL Server 7 或更早版本创建的哈希一起使用。

没有解释为什么不应该使用这个选项来创建新的登录,如果有原因,这并不明显(至少对我来说)。

该文档引用了 KB918992,虽然有点不清楚,但描述了指示旧版(2000-2008 R2)密码哈希自动升级的步骤。因此,我可以获取在 2000-2008 R2 和CREATE LOGIN ... WITH PASSWORD ... HASHED2012(+?)上生成的密码哈希,并在主体第一次登录时将哈希转换为 2012 格式。我测试过这确实像描述的那样工作。

密码哈希本身似乎有一个 6 字节的签名/元数据标头,由我认为是 2 字节的标签/版本和 4 字节的盐组成。升级哈希时,标签/版本会增加,而盐保持不变。

那么问题是:如果微软已经融入了这种未来的兼容性(我认为未来需要维护),那么有什么理由不应该使用这种方法来创建新的登录名?

sql-server sql-server-2008
  • 2 个回答
  • 2968 Views
Martin Hope
Jon Seigel
Asked: 2013-03-06 09:59:41 +0800 CST

如何修复“OLE DB 提供程序“MSOLAP”尚未注册”?

  • 4

这是我用来将链接服务器注册到 SSAS 的代码:

USE [master];
GO

EXEC master.dbo.sp_addlinkedserver
    @server = N'ServerAlias',
    @srvproduct = N'',
    @provider= N'MSOLAP',
    @datasrc= N'ActualServerName',
    @catalog = N'DatabaseName';

当我尝试使用 运行 MDX 查询OPENQUERY时,或者在运行上述代码后在 Management Studio 中使用测试连接命令时,我收到错误消息:

消息 7403,级别 16,状态 1,第 1 行
OLE DB 提供程序“MSOLAP”尚未注册。

这很奇怪,因为此提供程序是作为 SQL Server 的一部分安装的。

  • 它在同一个盒子上的所有其他实例上也失败了——总共 5 个 2008 R2 RTM 和 2008 R2 SP1 实例。我记不清了,但问题框中的 1 或 2 个实例可能在某个时候从 2008 升级到 2008 R2。
  • 它在使用 2008 R2 的其他几个机器上取得了成功,其中一个机器总共有大约十几个 2005、2008 R2 和 2012 实例。我尝试了 32 位和 64 位都成功了。

我查看了描述确切问题的这篇 Microsoft 知识库文章;但是,没有适用的解决方案。我在互联网上发现的所有其他此错误实例都是由于有人错误地定义了链接服务器,这也不适用。

这是一个开发服务器(谢天谢地),所以几乎所有选项都在桌面上。维修会解决这个问题吗?感觉注册表中有问题。

(我先问路,因为没有权限,我自己无法进行任何维护。)

sql-server sql-server-2008-r2
  • 2 个回答
  • 31282 Views
Martin Hope
Jon Seigel
Asked: 2012-10-20 08:54:46 +0800 CST

快速 XML,慢速 XML

  • 3

我们的数据库更新 Windows 应用程序需要在两个数据库之间传输一些数据,作为某个一次性更新过程的一部分。我选择 XML 作为媒介来移动数据。

该过程通过从源中选择一大块作为 XML 的行来工作,这些行通过应用程序传递到目标服务器,在那里它被分解成一个全局临时表。(源数据库和目标数据库可以位于 2 个不同的实例上。)重复该过程,直到所需的所有数据都在目标实例的临时表中。最后,将临时表记录合并到实际的目标数据库表中。

我们遇到的问题是,在某些情况下,第二个块非常慢,CPU 使用率非常高,而且它无处可去。我们能够在我们的托管环境中重现该问题,但不能在开发或 QA 中重现。我们的一些客户也遇到了这个问题——其中一个客户让它运行了一夜,最后在第二天早上运行了 18(!)小时后将其杀死。在那种情况下,我不确定它走了多远。等待约 2 小时后,我无法通过托管的第二块。

这是第一个块的语句批处理:

SET NOCOUNT ON;

DECLARE @src xml;
SET @src = CAST(@P1 AS xml);

SELECT
    n.x.value(N'field1[1]', 'uniqueidentifier') AS field1,
    n.x.value(N'field2[1]', 'smallint') AS field2,
    ... (8 more fields of various types) ...
    INTO [##target_2994] /*******/
    FROM @src.nodes('Rows[1]/Row') n(x);

这是第二个和后续块的批次,这就是问题所在:

SET NOCOUNT ON;

DECLARE @src xml;
SET @src = CAST(@P1 AS xml);

INSERT INTO [dbo].[##target_2994] /*******/
    SELECT
        n.x.value(N'field1[1]', 'uniqueidentifier') AS field1,
        n.x.value(N'field2[1]', 'smallint') AS field2,
        ... (8 more fields of various types) ...
        FROM @src.nodes('Rows[1]/Row') n(x);

这是我到目前为止所看到的:

  • 这不是一个阻塞问题:等待统计信息是声明中的 99 SOS_SCHEDULER_YIELD% INSERT。
  • sys.dm_io_virtual_file_stats在目标上tempdb显示它基本上是空闲的,所以这不是 I/O 问题。
  • 所有数据都只有固定宽度的列,因此没有大量长文本字段。
  • 数据块大小目前为 25,000 行,我们可能会降低这个值,但这并不能解释差异,因为我们已经用一些相同的数据集进行了测试。需要传输的最大表约为 725,000 行,测试结果很好。
  • 查询计划在问题与没有问题之间是相同的*(我对 XML 进行了文件比较)。
  • 问题与无问题之间的会话SET选项相同。
  • 版本似乎不是一个因素:托管是 2008 R2 SP1 Enterprise x64;我们已经在 2005 SP4+ Standard x64 一直到 2008 R2 SP1+ Developer x86 进行了测试,没有出现任何问题。有问题的客户是 2008 RTM/SP1 Standard/Enterprise x64(到目前为止)。
  • 虚拟化似乎不是一个因素:托管和 QA 是虚拟化的;dev 是部分虚拟化的;有问题的客户是身体上的。MAXDOP没有为我们的任何服务器设置(最大 = 4 个逻辑处理器);我不确定客户的设置。
  • 两个数据库在同一台服务器上与不同的服务器上没有区别。
  • 在 TS 盒上运行更新应用程序与在本地运行没有区别。
  • Tempdb 数据库设置是相同的。
  • 实例和数据库排序规则是相同的。
  • 将目标服务器上 tempdb 的兼容级别更改为 90 并没有帮助。(根据马克的回答)
  • 没有显着的实例配置差异。(根据金博的回答)

任何人都可以建议其他的东西看吗?

* 计算表达式的名称不同,其中一个估计的行大小差异 < 1%,但其他一切都相同,包括总成本估计。

sql-server sql-server-2008
  • 2 个回答
  • 10718 Views
Martin Hope
Jon Seigel
Asked: 2012-06-20 12:59:39 +0800 CST

大规模的点对点复制拓扑?

  • 5

我们有一个客户,它在地理上分布在偏远社区,每个物理位置之间的网络/互联网连接有些不可靠。有一个中央位置和 52 个卫星位置。

通常,我们的应用程序部署为一个中央解决方案,其中只有一个数据库,所有位置都连接到一个数据库。数据本身由大多数表中的位置列进行分区(一些数据是集中式的),并且应用程序运行使得在一个物理位置接触数据不会接触到另一个物理位置的数据,包括集中式数据(至少,我们很确定它不会——如果是这样,那很可能是一个错误)。我们的客户想做集中报告(我们通常支持),并在整个企业中同步几个集中配置表(同样,因为通常只有一个表副本)。

每个位置都有自己的数据中心,并获得 SQL Server 2008 R2 Enterprise 的许可。

目标是部署我们的应用程序,使网络/互联网连接中断不能阻止本地读/写操作,因为我们的应用程序是关键任务。


我的第一个想法是使用一个巨大的点对点拓扑来复制数据库中的每个对象。我无法找到任何使用这种方法进行如此大规模扩展的任何安装的文档或参考资料,所以我不知道它在技术上是否可行,如果可行,将需要什么硬件。这是否适用于集中式分发数据库(为了便于管理)?这甚至是一个好主意吗?如何部署数据库架构更改?索引维护是否会产生大量的网络开销?

还可以选择创建一个自己滚动的解决方案,我认为这将涉及将数据库的单独副本(每个非中心位置仅包含其数据的分区部分)的日志传送到中心位置,然后使用用于创建报告数据库的合并工具(我们已经拥有)。配置表更改将由其他机制推出,可能是合并复制,可能是自制解决方案。

我考虑并测试了在整个数据库上使用合并复制,但我们需要大量的数据库和应用程序更改/重新设计/等。为了使这项工作正常进行,因此由于时间限制,我已经排除了这一点。(对此有什么想法?)


我在这里寻找的是有更多经验的人的一些指导。显然,为此做好计划至关重要。我在正确的道路上吗?还有其他选择吗?(网址?)

sql-server sql-server-2008-r2
  • 2 个回答
  • 1459 Views
Martin Hope
Jon Seigel
Asked: 2011-08-08 16:48:19 +0800 CST

为什么允许每个人都使用 sa 登录是一种不好的做法?

  • 25

甚至微软也不鼓励使用 SQL Server 身份验证模式,但我们的应用程序需要它。

我读过最好不要让用户sa直接使用登录名,而是使用 Windows 身份验证并允许这些帐户(或帐户组)系统管理员权限。

  • 这本质上不是一样的吗?有什么优点/缺点?
  • 最佳实践如何提高我的 SQL Server 实例的安全性?
  • 这是否仅适用于生产实例,或者也适用于我们的内部开发实例?
sql-server security
  • 8 个回答
  • 13092 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve