我的情况是我照顾一个带有基于 VB6 的前端和一个 SQL 后端的旧系统(好消息,正在开发替代品,但同时我需要保持这种状态)。现在该应用程序在十几个站点上使用,其中大多数在SQL2000上,一个在SQL2008上,一个在SQL2008R2(均为标准)上。更改版本/版本将是一个很大的问题。
SQL2008R2 上托管的站点碰巧也是最大的站点。我们现在有一个包含超过 20 亿行和 700GB 数据的表。这是一小部分列,其中一个是用于存储序列化 blob 数据的 256 个字符 varchar。现在,当人们尝试插入、删除和更新它(通过应用程序)时,用户偶尔会互相锁定。随着时间的推移,这种情况只会变得更糟。然而,下一个最大的是 SQL2000..
我需要缩小这张桌子的大小。我可以使用哪些方法或技术来实现这一目标?理想情况下,该技术将与 SQL2000 标准版兼容,因此我可以在所有站点上使用它。然而,仅仅修复 SQL2008R2 标准上最大的违规者就可以了。
该表确实有一个标识列,并且由于表定义由应用程序控制,因此无法更改(我提到这一点是因为我相信这排除了分区视图 - 应用程序插入、更新和删除行)。
我目前的想法是删除过去 X 个月过去的所有数据(占总数的 50%),并将其分配到不向用户或应用程序公开的表中。然后在应用程序中,我可以为用户提供一种方法来请求将数据项复制回,这将通过预定的作业(可能在一夜之间)完成。然而,这对我来说感觉很笨拙。
我在两节点 Windows Server 故障转移群集上运行的 SQL Server 2014 上设置了一个可用性组。设置由两个独立实例 + 同步自动故障转移组成。
我读过的许多 Microsoft 文章都提倡为 TempDB 使用多个文件来提高性能。似乎他们建议使用 8 个文件。
在这种配置的情况下,我应该这样做吗?它会提高性能吗?
我有这个脚本可以正常工作,但是当我更改目录路径时,它似乎收到此语法错误“字符串后未关闭的引号”会导致这种情况的问题。
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) 我想通过添加一列来更改表格。到目前为止,这里没什么可看的,但我想让这个列成为复合键的一部分,即,我现在有一个布局
table_name( Field_1 datatype PK, Field_2 datatype,....)
Run Code Online (Sandbox Code Playgroud)
并且我希望插入的列,比如 Field_k 与现有的单字段 PK 一起成为 PK 的一部分。
我还没有找到有关如何执行此操作或是否可行的任何来源。请问有什么建议吗?
我在 SQL Server 2008 R2 中有数据库。我备份了这个数据库并在 SQL Server 2014 服务器上恢复了它。但是,某些数据库查询看起来与新版本不兼容。
例如,*=运算符在 SQL Server 2014 中引发错误。
我不想更改出现问题的每个查询。有没有办法升级旧版本的 SQL Server 备份以使用新版本的数据库?
我正在处理从服务器 A 到服务器 B 的数据库迁移。
服务器 A:- 数据库大小 - 2 TB - Sql 2008R2 - 多个数据文件存储在差异驱动器中。
服务器 B:- 磁盘空间:- 999 GB - Sql 2014 Enterprise
建议我最好的方法。
我想使用备份压缩,但后来知道它只能在相同的 Sql 服务器版本之间使用。这是真的吗?
另外让我知道如果我使用 Sql 压缩,原始 DB 和在新 DB 上还原的压缩 DB 之间会有任何变化吗?
我有一个价值19920000。这是日期格式yyyyMMdd。我想按表中的日期字段保存。您可能会看到它是无效数据,因为日和月值为零。我可以在 SQL Server 中将日期格式转换为这个值吗?可不可以?
如何仅在日期字段中保存年份?
我从excel表中获取数据。这些数据是客户的出生日期。有些人想隐藏出生日期的日期和月份。他们没有给出正确的日期格式。我的应用程序是从 excel 表中读取数据并显示在 datagridview 表上,然后保存到数据库。数据量大,至少一次读取约30000条以上记录。我无法为此数据字段分隔列,因为性能可能会下降。
我正在使用 SQL Server 2008。
.
我想将整个数据库加载到内存中,但是我该怎么做呢?我有大约 256 GB 的内存,我的数据库大约有 200 GB,所以我可以轻松地处理内存。
当我执行select count(*) from table1sqlserver 自动将表加载到内存之后,我可以非常快速地使用表,但我想知道如何将整个数据库加载到内存中?
如果我select count(*) from在每个表上都这样做,我可以更快地工作,但是有没有其他方法可以将整个数据库加载到内存中?我想通过一个命令加载整个数据库,而不是一个select count(*) from表一个表。
我已经读到 Microsoft SQL Server 已弃用text数据类型而支持varchar(max).
PostGreSQL 已经允许varchar(没有长度)作为text.
问题是,ANSI SQL 标准对弃用text和最佳替代方案有何看法?另外,MySQL/MariaDB 是否也遵循这一点?
谢谢
我想从 SQL Server 数据库中混淆(打乱)敏感数据,但方式将提供:
例子:
Abc -> zyx (lenght: 3)
StackOverflow -> a65vr4doqjd (lenght: 11)
Run Code Online (Sandbox Code Playgroud)
通常我会避免“自制”算法,所以你知道一些可以提供这种混淆的 MS 内置解决方案吗?
我希望我清楚地表达了我的问题,否则让我知道,我会尝试根据需要添加尽可能多的信息。
sql-server ×10
alter-table ×1
backup ×1
cache ×1
data-masking ×1
date ×1
ddl ×1
foreign-key ×1
memory ×1
mysql ×1
optimization ×1
partitioning ×1
postgresql ×1
security ×1
sql-standard ×1
syntax ×1
t-sql ×1
tempdb ×1
upgrade ×1