标签: sql-server-2008

子查询结果的转换失败

我有点不高兴,我必须对数据质量很差的数据库执行查询。我正在尝试评估一个包含日期但被定义为nvarchar. 我以为我可以将值转换为整数,但这失败了,因为日期字段中也有非日期值(随机字母和符号等)。

我决定做的事情如下:

SELECT q.foo, cast( q.bar as int) 
FROM ( SELECT foo,bar FROM table where ISNUMERIC(bar) = 1) as q 
WHERE q.bar > 20140401
Run Code Online (Sandbox Code Playgroud)

但这仍然会导致 nvarchar 值的转换失败'. '。我希望所有值都可以转换为 int,因为它们是数字?

sql-server-2008 sql-server cast

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

新的 SQL Server 2008 实例,加载旧的实例数据库

背景故事
我是一名开发人员,在我的工作站上有一个 SQL Server 2008 的本地实例。我最近刚刚升级了我的主板,发现(令我非常沮丧)旧主板的 RAID 驱动程序显然与新主板不兼容,因此基本上,我无法使用旧主板上的 Windows 实例。幸运的是,我有所有内容的完整备份。

我的问题
我想在我的新机器上安装 SQL Server 2008,但我想加载旧数据文件。我有很多我不想重新创建的数据库。我拥有所有原始的 MDF 和 LDB,但没有实际的 SQL Server“备份”。

有没有办法做到这一点?

谢谢你的帮助。

sql-server-2008 sql-server restore

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

使用单个查询将数据添加到多个表

我想使用单个INSERT INTO查询将数据添加到多个表,我可以这样做吗?

如果可能,请指导我并提供语法。

sql-server-2008 sql-server t-sql

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

在 SQL Server 2008 中将行的显示更改为单行

我创建了一个包含以下 2 个小表的数据库

这是数据库脚本

USE [Test1July]
GO
/****** Object:  Table [dbo].[Hotels]    Script Date: 07/01/2014 22:33:33 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Hotels](
    [SeqID] [int] IDENTITY(1,1) NOT NULL,
    [HotelName] [nchar](25) NULL,
 CONSTRAINT [PK_Hotels] PRIMARY KEY CLUSTERED 
(
    [SeqID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object:  Table [dbo].[HotelRooms]    Script Date: 07/01/2014 22:33:33 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 pivot

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

预先格式化的 varchar 变量在选择查询中不起作用

我正在尝试运行一个选择查询,该查询在 where 子句中接收@Sites 变量。目前的查询返回空,因为以下行

AND S.[Name] IN (@Sites)
Run Code Online (Sandbox Code Playgroud)

未按预期处理。下面是查询的摘录:

SET QUOTED_IDENTIFIER OFF

DECLARE @Month int
, @Sites varchar(MAX) = null

SET @Month = 8
SET @Sites = 'Bayside;Collaborative'
SET @Sites = "'" + REPLACE(@Sites,';',"','") + "'"


SELECT 
    CV.[Id] AS Id
    , ...
    , S.[Name] AS [Site]
    , ...
  FROM 
    [CalendarViews] CV
    INNER JOIN [Sites] S ON S.[Id] = CV.[SiteId]
  WHERE
    MONTH(CV.[DateAllocation]) = @Month
    AND S.[Name] IN (@Sites)
  ORDER BY 
     S.[Name]
Run Code Online (Sandbox Code Playgroud)

当我运行查询替换

AND S.[Name] IN (@Sites)
Run Code Online (Sandbox Code Playgroud)

为了

AND S.[Name] IN ('Bayside','Collaborative') …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008

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

有没有办法对表名的所有存储过程进行文本搜索?

我刚刚继承了一个包含许多表和存储过程的数据库。我用Microsoft SQL Server Management Studio.

一个或多个存储过程更新特定表。我想对所有存储过程进行文本搜索,以查找更新表的过程。

如果原始 SQL 在我们的代码中,我只是grep代码库,但是对于存储过程,我不确定如何搜索所有存储过程。

我还想重命名一些内容并在整个存储过程中进行查找/替换。

是否可以使用Microsoft SQL Server Management Studio?在存储过程中进行搜索和替换?

sql-server-2008

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

Tempdb 文件不存在

我在我的 SQL Server 的 tempdb 之一上有一个奇怪的行为。
它有六个 tempdb 文件,根据 SSMS 和查询,都指向 S 目录。他们每个人都有 ~5gb 的初始大小。
奇怪的是 S 是法定人数,实际上只有 2GB 的可用空间。Tempdb 文件根本不存在于 S 及其子目录中。
问题是 tempdb 文件在哪里?:) 我怎样才能看到它们?
谢谢你。

sql-server-2008 sql-server sql-server-2008-r2 sql-server-2012 tempdb

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

如何在一个数据库中的表中设置外键引用另一个数据库中的表

消息 1768,级别 16,状态 0,第 1 行
外键“FK_id”引用了不是用户表的对象“dbo.student”。

消息 1750,级别 16,状态 0,行 1
无法创建约束。请参阅以前的错误。

sql-server-2008

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

备份一个非常庞大的 SQL Server 数据库

我们有一个大小超过 200GB 的 SQL Server 2008 数据库。服务器上没有磁盘空间来进行备份。我真的需要备份或制作此数据库的另一个副本。实现这一目标的最佳方法是什么?

谢谢

sql-server-2008 sql-server

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

高 PAGEIOLATCH_SH 在服务器上等待

编辑:

我知道这个问题已经结束,但我希望它会对某人有所帮助。

问题出在我们的磁盘( cluster )上。

使用 PerfMon,我可以创建一些计数器(磁盘读取和写入)并且读取计数器固定为 100%。

高读取我看到以下等待sp_WhoIsActive



PAGEIOLATCH_SH:Database_Name:1(*)
Run Code Online (Sandbox Code Playgroud)

我在这里看到一些帖子,说这个警告是因为高 I/O。SQL Server 联机丛书将 SQL 等待类型 PAGEIOLATCH_SH 定义为:

当任务正在等待 I/O 请求中的缓冲区的闩锁时发生。锁存请求处于共享模式。

和这个:

用户进程将请求一些当前不在缓冲区缓存中的数据。此时——SQL Server 将尝试分配一个缓冲区页——当数据从磁盘移动到缓冲区缓存时,在缓冲区上创建了一个独占的 PAGEIOLATCH_EX。同时从用户进程的角度在缓冲区上创建一个 PAGEIOLATCH_SH。

我创建了索引和统计信息,还使用了 SQL Server Profiler 来帮助我。

有什么办法可以改进查询吗?我怎样才能改进大量的处理ANDs

我们已经遇到这个问题大约一个星期了,我不知道该怎么办。

SELECT TOP 30 codCliente 
FROM (
    SELECT t1.CodCliente
        , codcampo
        , valor
        , t1.chavealeat 
    FROM tblCliente AS t1 WITH(NOLOCK) 
        INNER JOIN tblClienteDetalhe AS t2 WITH (NOLOCK) 
            ON t1.codcliente = t2.codcliente 
            AND CodCampo IN (-1, 4)
    WHERE codStatus IN(0)  
        AND t1.ChavePeriodo < getdate() …
Run Code Online (Sandbox Code Playgroud)

performance sql-server-2008 sql-server query-performance

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