小编Low*_*n M的帖子

MySQL复制-如何从从服务器读取数据?手动?

MySQL 手册 - 复制:

“横向扩展解决方案 - 在多个从服务器之间分散负载以提高性能。在这种环境中,所有写入和更新都必须在主服务器上进行。但是,读取可能会在一个或多个从服务器上进行。”

我看到了如何设置看起来相对简单的复制,但我还没有看到应用程序应如何与从站通信。

我假设应用程序必须确定从哪个从设备读取?应用程序还必须知道哪个服务器正在执行写入操作?或者是否可以让应用程序将所有查询发送到主站并将读取代理到从站?

mysql replication

3
推荐指数
2
解决办法
2871
查看次数

在 dm_os_ring_buffers 中转换时间戳

在尝试将其转换为合法时间时,我经常看到这种转换:

SELECT DATEADD (ms, -1 * ((s.cpu_ticks) - r.[timestamp]), GETDATE())
FROM sys.dm_os_ring_buffers r
                CROSS JOIN sys.dm_os_sys_info s
Run Code Online (Sandbox Code Playgroud)

我收到错误:

将表达式转换为数据类型 int 时出现算术溢出错误。

转换这个的正确公式是什么?

答案:ms_ticks

sql-server t-sql

3
推荐指数
1
解决办法
1029
查看次数

如何最好地将像素存储在数据库中?

将数据加载到表中时,出现以下错误:

ERROR:  row is too big: size 8680, maximum size 8160
Run Code Online (Sandbox Code Playgroud)

该表中有 1000 多列,这似乎是问题所在。一般的互联网建议是“重构!” 或“正常化!”。例如,这篇文章。不幸的是,我不相信这样的建议适用于我的情况。

该表用于存储从设备收集的数据。作为分析的一部分,设备会生成 PNG 图像。PNG 包含 1024 个像素。每个像素都有一个关联的数值。与像素数据一起的是与分析相关的各种其他领域。把桌子分成几部分真的没有意义。这些字段都与正在分析的特定对象在逻辑上相关联。

Postgres 似乎不喜欢每个像素都有自己的字段。该表具有以下形式的字段:pixel_1, pixel_2, ..., pixel_1024。注意,这是从通常的例子有着根本的不同phone_number_1phone_number_2等每个像素是由于其位置的一个唯一的对象。 pixel_1具有不同的位置,pixel_123并且每个像素都有一个相关联的值。它们之间的共同点是它们都用于描述相同的分析对象。它们是 PNG 中给出的视觉表示的定量模拟。

  1. 有没有办法增加行大小?
  2. 如果表根本不能有 1000 多列,我该如何重构它?
  3. 假设前两个答案是“否”,我是否应该将 1024 列粘贴到 XML 中并将其放入文本字​​段中?

我希望我已经把上下文说清楚了。我试图将问题归结为它的本质,但我怀疑可能需要进行一些澄清。如果需要澄清,请告诉我。

编辑:作为一项实验,我尝试将像素分解为单独的表格。这似乎是唯一可能的重构方式。但是 1024 列会产生相同的错误。

postgresql centos-7 postgresql-9.5

3
推荐指数
1
解决办法
889
查看次数

数据库备份时间= SQL Server 中的还原时间吗?

我有一个 10 GB 大小的 SQL Server 数据库。当我执行备份时,花了将近 3-4 分钟。当我尝试恢复时,几乎花了同样的 3-4 分钟。

这是否意味着 SQL Server 数据库的备份和恢复时间总是相等的,还是可以不同?

请建议并指出我背后的逻辑。

sql-server backup restore sql-server-2014

3
推荐指数
1
解决办法
1490
查看次数

Visual Studio 数据库项目 - 发布不包含删除,但模式比较包含

我只是观察到发布与模式比较的结果存在差异。我对 Visual Studio 数据库项目进行了更改 - 其中一些涉及删除表。

  1. 将更改推送到 VSTS,构建成功,成功发布到 Azure DB
  2. 检查说Azure DB。未删除在项目中删除的表。仔细检查发布脚本 - 这不包括任何掉落。
  3. Ran SchemaCompare - 这暴露了所有丢失的删除,并且在执行时给了我预期的结果(适用的表被删除)。

手动发布与模式比较时,在本地数据库上观察到相同的结果。我做错了什么?我认为发布会删除表格。

visual-studio azure-sql-database

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

锁定在旧的 2008R2 数据库之外

我们刚刚发现了另一台带有数据库的服务器。数据库归 SQL 帐户所有SA,具有publicsysadmin角色。另一个登录名是BUILTIN\Users,只有public。我只能通过这个连接。SAdisabled,即使不是,我们也可能不知道密码。

问题:有什么方法可以使用enable SA或创建另一个 sql 登录sysadmin

security sql-server sql-server-2008-r2

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

Invoke-SqlCmd - 将强制转换为整数以防止注入

我很懒惰,宁愿参数化一次(以获得名称的 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)

sql-server sql-injection powershell

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

数据库权限

我在服务器级别创建了一个名为 TestUser 的登录用户,该用户分配给只读角色,现在我需要为 MyDb 上的 TestUser 登录创建一个用户

USE [MyDB]
GO
CREATE USER [Test] FOR LOGIN [TestUser]
GO
GRANT SELECT TO [Test]
GO
DENY DELETE TO [Test]
GO
DENY INSERT TO [Test]
GO
DENY UPDATE TO [Test]
GO
Run Code Online (Sandbox Code Playgroud)

一切都很好,但是当我编写测试用户创建的脚本时,我在任何地方都看不到我提供选择和拒绝插入、删除和更新的脚本

sql-server permissions users

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

“PRIMARY”文件组已满。如何增加 SQL Server Express 2017 中的 temdb 大小?

当我重新索引特定表时

\n\n
DBCC DBREINDEX(@TableName, \'\',90) \n
Run Code Online (Sandbox Code Playgroud)\n\n

我收到一个错误

\n\n
\n

级别 17,状态 2,过程 aareindex,第 21 行 [批处理起始行 0]\n 无法为对象 \xe2\x80\x98dbo 分配空间。SORT 临时运行存储:\n 数据库 \xe2 中的 422738479742976\xe2\x80\x99 \x80\x98mydatabase\xe2\x80\x99 因为 \xe2\x80\x98PRIMARY\xe2\x80\x99\n 文件组已满。通过删除不需要的文件、删除文件组中的对象、向文件组添加其他文件或为文件组中的现有文件设置自动增长来创建磁盘空间。

\n
\n\n

所以我想尝试增加 TempDb 的大小

\n\n

我可以通过查看数据库属性使用 SSMS 查看大小,但我不知道如何设置它。

\n\n

[更新]

\n\n
select type_desc, name, size, max_size, growth from tempdb.sys.database_files\n
Run Code Online (Sandbox Code Playgroud)\n\n

回报

\n\n

这些结果

\n\n

文件大小已为 10236 Mb,Express 限制为 10 Gig\n但是磁盘使用情况报告显示 26% 的磁盘空间未分配,40% 为数据,32% 为索引。

\n

sql-server sql-server-express sql-server-2017

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

Force_legacy_cardinality_estimation 提示问题

  1. force_legacy_cardinality_estimation 提示是否会更改整个查询(或存储过程)的基数或仅更改其应用的代码部分?(例如,如果存储过程中有多个 SELECT 语句,但提示仅在其中一个 SELECT 语句上。)
  2. 您可以在视图中使用提示吗?

sql-server sql-server-2019

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