标签: sql-server

拆分一张大桌子

我的情况是我照顾一个带有基于 VB6 的前端和一个 SQL 后端的旧系统(好消息,正在开发替代品,但同时我需要保持这种状态)。现在该应用程序在十几个站点上使用,其中大多数在SQL2000上,一个在SQL2008上,一个在SQL2008R2(均为标准)上。更改版本/版本将是一个很大的问题。

SQL2008R2 上托管的站点碰巧也是最大的站点。我们现在有一个包含超过 20 亿行和 700GB 数据的表。这是一小部分列,其中一个是用于存储序列化 blob 数据的 256 个字符 varchar。现在,当人们尝试插入、删除和更新它(通过应用程序)时,用户偶尔会互相锁定。随着时间的推移,这种情况只会变得更糟。然而,下一个最大的是 SQL2000..

我需要缩小这张桌子的大小。我可以使用哪些方法或技术来实现这一目标?理想情况下,该技术将与 SQL2000 标准版兼容,因此我可以在所有站点上使用它。然而,仅仅修复 SQL2008R2 标准上最大的违规者就可以了。

该表确实有一个标识列,并且由于表定义由应用程序控制,因此无法更改(我提到这一点是因为我相信这排除了分区视图 - 应用程序插入、更新和删除行)。

我目前的想法是删除过去 X 个月过去的所有数据(占总数的 50%),并将其分配到不向用户或应用程序公开的表中。然后在应用程序中,我可以为用户提供一种方法来请求将数据项复制回,这将通过预定的作业(可能在一夜之间)完成。然而,这对我来说感觉很笨拙。

sql-server sql-server-2000 sql-server-2008-r2 partitioning

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

具有可用性组的 tempdb 的任何不同指南?

我在两节点 Windows Server 故障转移群集上运行的 SQL Server 2014 上设置了一个可用性组。设置由两个独立实例 + 同步自动故障转移组成。

我读过的许多 Microsoft 文章都提倡为 TempDB 使用多个文件来提高性能。似乎他们建议使用 8 个文件。

在这种配置的情况下,我应该这样做吗?它会提高性能吗?

sql-server tempdb availability-groups sql-server-2014

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

语法错误帮助

我有这个脚本可以正常工作,但是当我更改目录路径时,它似乎收到此语法错误“字符串后未关闭的引号”会导致这种情况的问题。

DECLARE @db VARCHAR(50), 
@sql NVARCHAR(400),
@country varchar(100)
DECLARE barcardi cursor for 
select [ProjectDB] from [DBA].[dbo].[BacardiExport] order by [Country] asc
open barcardi 
fetch next from barcardi into @db
while @@FETCH_STATUS = 0
    begin
        set @country = (select country from [DBA].[dbo].[BacardiExport] where [ProjectDB] = @db)
        set @sql = 'BACKUP DATABASE ['+@db+'] TO  DISK = N''D:\ConfirmitN02BackupNew\BacardiProjectBackup\Bacardi_'+@country+'_'+@db+'.bak'' WITH NOFORMAT, NOINIT, SKIP, NOREWIND, NOUNLOAD,  STATS = 10'
        exec sp_executesql @sql
        --print @sql

        set @country = (select country from [DBA].[dbo].[BacardiExport] where [ProjectDB] = @db)
        set …
Run Code Online (Sandbox Code Playgroud)

sql-server syntax

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

在 DROP/Add 列语句中更改 Key (PK, FK) 属性

我想通过添加一列来更改表格。到目前为止,这里没什么可看的,但我想让这个列成为复合键的一部分,即,我现在有一个布局

table_name( Field_1  datatype PK, Field_2 datatype,....) 
Run Code Online (Sandbox Code Playgroud)

并且我希望插入的列,比如 Field_k 与现有的单字段 PK 一起成为 PK 的一部分。

我还没有找到有关如何执行此操作或是否可行的任何来源。请问有什么建议吗?

foreign-key database-design sql-server alter-table ddl

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

将数据库从 SQL Server 2000 升级到 SQL Server 2014

我在 SQL Server 2008 R2 中有数据库。我备份了这个数据库并在 SQL Server 2014 服务器上恢复了它。但是,某些数据库查询看起来与新版本不兼容。

例如,*=运算符在 SQL Server 2014 中引发错误。

我不想更改出现问题的每个查询。有没有办法升级旧版本的 SQL Server 备份以使用新版本的数据库?

sql-server sql-server-2008-r2 upgrade sql-server-2014

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

大约 2 TB 的大型数据库备份和有限的磁盘空间恢复

我正在处理从服务器 A 到服务器 B 的数据库迁移。

服务器 A:- 数据库大小 - 2 TB - Sql 2008R2 - 多个数据文件存储在差异驱动器中。

服务器 B:- 磁盘空间:- 999 GB - Sql 2014 Enterprise

建议我最好的方法。

我想使用备份压缩,但后来知道它只能在相同的 Sql 服务器版本之间使用。这是真的吗?

另外让我知道如果我使用 Sql 压缩,原始 DB 和在新 DB 上还原的压缩 DB 之间会有任何变化吗?

sql-server backup

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

我可以为此值“19920000”转换日期格式吗?

我有一个价值19920000。这是日期格式yyyyMMdd。我想按表中的日期字段保存。您可能会看到它是无效数据,因为日和月值为零。我可以在 SQL Server 中将日期格式转换为这个值吗?可不可以?

如何仅在日期字段中保存年份?

我从excel表中获取数据。这些数据是客户的出生日期。有些人想隐藏出生日期的日期和月份。他们没有给出正确的日期格式。我的应用程序是从 excel 表中读取数据并显示在 datagridview 表上,然后保存到数据库。数据量大,至少一次读取约30000条以上记录。我无法为此数据字段分隔列,因为性能可能会下降。

我正在使用 SQL Server 2008。

.

sql-server-2008 sql-server date

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

如何将整个数据库加载到内存中?

我想将整个数据库加载到内存中,但是我该怎么做呢?我有大约 256 GB 的内存,我的数据库大约有 200 GB,所以我可以轻松地处理内存。

当我执行select count(*) from table1sqlserver 自动将表加载到内存之后,我可以非常快速地使用表,但我想知道如何将整个数据库加载到内存中?

如果我select count(*) from在每个表上都这样做,我可以更快地工作,但是有没有其他方法可以将整个数据库加载到内存中?我想通过一个命令加载整个数据库,而不是一个select count(*) from表一个表。

sql-server optimization memory cache sql-server-2014

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

不推荐使用 SQL 文本数据类型?

我已经读到 Microsoft SQL Server 已弃用text数据类型而支持varchar(max).

PostGreSQL 已经允许varchar(没有长度)作为text.

问题是,ANSI SQL 标准对弃用text和最佳替代方案有何看法?另外,MySQL/MariaDB 是否也遵循这一点?

谢谢

mysql postgresql sql-server sql-standard

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

T-SQL中的动态长度混淆方法

我想从 SQL Server 数据库中混淆(打乱)敏感数据,但方式将提供:

  • 不可逆性(明文无法从混淆数据中导出),
  • 混淆后的数据长度需要与混淆前的数据长度相同。
  • 对于相同输入值的重复混淆,混淆值不需要是唯一的。老实说,我更喜欢为可以使用的相同输入获得相同的值(例如,不同表中的一些匹配数据,可能在测试用例中有用)。

例子:

Abc -> zyx (lenght: 3)
StackOverflow -> a65vr4doqjd (lenght: 11)
Run Code Online (Sandbox Code Playgroud)

通常我会避免“自制”算法,所以你知道一些可以提供这种混淆的 MS 内置解决方案吗?

我希望我清楚地表达了我的问题,否则让我知道,我会尝试根据需要添加尽可能多的信息。

security sql-server t-sql data-masking

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