标签: sql-server-2005

如何在不同的驱动器上创建新的SQL数据库

我最近在新计算机上安装了SSMS 2014,安装在C:中,但是C:没有足够的空间,因此我需要在D:上创建新数据库。请帮助我该怎么做?

sql t-sql sql-server ssms sql-server-2005

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

使用顺序标识符填充新ID列

我需要使用从"PM1000000000"开始的唯一序列填充列nvarchar(12),并为每行增加1.没有标识列或主键(编辑)循环,这使得这个问题非常具有挑战性,因为我发现的大多数示例都使用标识列来循环

我在MSDN上的https://support.microsoft.com/en-us/kb/111401上找到了一个示例,示例3,但它没有显示增加一行

任何人都可以帮助我填充这个字段,以便我可以将其作为主键吗?注意:这个表有6000万行,但我现在愿意接受任何想法才能使这个工作正常

t-sql sql-server sql-server-2005

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

SQL - 选择每个值的前n次出现

假设我有一张这样的表,只有数千条记录.

| Foo | Bar  | 
| 1   | A_1  | 
| 1   | A_2  | 
| 2   | B_1  | 
| 3   | B_1  | 
| 3   | B_2  | 
| 3   | B_1  | 
| 4   | B_3  | 
...
Run Code Online (Sandbox Code Playgroud)

当我执行下面的代码时,我显然得到了Bar以B开头的每一条记录.

SELECT Foo
FROM tableName
WHERE Bar LIKE 'B%'
Run Code Online (Sandbox Code Playgroud)

我知道使用GROUP BY会得到每个的前1个记录,但我需要的不仅仅是那个.使用SELECT TOP 100只会记录前100条记录,无论它们是哪个"B",并且因为有超过100个B_1值,所以我将获得所有这些.

我怎样才能获得每个唯一B 的前n条记录?例如,B_1的前100次出现,B_2的前100次出现等.

sql t-sql sql-server sql-server-2005

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

如何将GetDate()转换为"YYYY-MM-DD-HHMM"格式?

我一直在寻找答案,找不到满足我需求的确切答案.

我正在寻找将Datetime价值转换为YYYY-MM-DD-HHMM格式的方法.

我试过那一个:

select CONVERT(varchar(20),GETDATE(), 120) + replace(convert(varchar(5),getdate(),108),':','')
Run Code Online (Sandbox Code Playgroud)

但它没有给我正确的结果

有没有实用的方法呢?

sql-server datetime sql-server-2005

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

TSQL空数据''替换

我有以下查询:

SELECT pics.e_firedate FROM et_pics
Run Code Online (Sandbox Code Playgroud)

结果:

NULL
2014-12-01 00:00:00.000
2015-04-03 00:00:00.000
NULL
NULL
Run Code Online (Sandbox Code Playgroud)

我想将NULL值替换为''.

CASE 
        WHEN pics.e_firedate IS NULL THEN ''
        ELSE pics.e_firedate
END
Run Code Online (Sandbox Code Playgroud)

使得NULL转化到1900-01-01 00:00:00.000,我已经试过投和替换没有成功也.

我怎样才能实现我的目标?

sql t-sql sql-server sql-server-2005

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

SQL Server - 与where子句相反

我有一个数据集,我想过滤掉满足特定条件的行,但是它比我想象的要复杂得多.

基本上我想做的事情是这样一种WHERE (column1 NOT LIKE 'Z%' and column2 != '2')观点,即查询只会返回一行,其中某一特定行没有像column1中的'Z%'那样的值,并且在column2 中没有值'2' .

例如:

完整的数据集

column1 | column2
-----------------
ACAL    | 2
-----------------
ZVBBU3  | 2
-----------------
FSKE2   | X
Run Code Online (Sandbox Code Playgroud)

我想要的数据集

column1 | column2
-----------------
ACAL    | 2
-----------------
FSKE2   | X
Run Code Online (Sandbox Code Playgroud)

但是,它没有这样做.所以,我想有可能是一个编程方法类似WHERE (!(column1 LIKE 'Z% and column2 = '2')),其中!将返回指定标准的对面,但是,这将引发一个语法错误.有没有办法做我想做的事情?

sql sql-server-2005

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

SQL Server批量复制插入百万条记录很慢

我有一张有100万条记录的表。我需要能够将这些记录移动到另一个数据库和另一个表。

我正在使用存储过程来获取数据。它填充一个数据适配器,然后bcp将数据放入新表中。

我们使用的是SQL Server 2005和C#4。我们将使用C#4.6或5.0迁移到SQL Server 2012或2014和Visual Studio 2015。如果有任何功能可以使其正常工作。

  • 10k记录,此过程花费不到1秒的时间
  • 对于500k条记录,dataadapter内存不足,并且该过程失败。批处理到100k条记录时,select语句是SQL中的问题,一次返回100k条记录每个循环需要2分钟。

有没有办法,或者下面的代码有什么问题,可以防止数据适配器被填充,而是映射列并BulkCopy保留在服务器端,并且像SSIS那样将记录从db推送到新表中?

似乎大容量副本本身快如闪电,但是适配器填充失败,因为它用尽了内存,试图用一百万条记录填充适配器。一次不做1行,我只想在表之间移动数据。

一个表具有27列,其中5个不在表2中,而表2具有32列,并且某些列在两个表中的名称不同。

这是概念证明(PoC)。

sourceConn_transDB.Open();
SqlCommand sourceCommand = new SqlCommand(queryString, sourceConn_transDB);
DataTable table = new DataTable();

sourceCommand.CommandTimeout = 600;

using (var adapter = new SqlDataAdapter(sourceCommand))
{
    WriteLineWithTime("Adapter Fill");
    adapter.Fill(table);
}

if ((table == null) || (table.Rows.Count <= 0))
   break;

using (SqlBulkCopy bulk = new SqlBulkCopy(targetConn_reportDB, SqlBulkCopyOptions.KeepIdentity, null) { DestinationTableName = "PatientEvent" })
{
    bulk.ColumnMappings.Add(new SqlBulkCopyColumnMapping("PatientID", "PatientID"));
}
Run Code Online (Sandbox Code Playgroud)

c# sql sql-server-2005 poc

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

存储过程不返回通过日期的任何数据

我有一个存储过程,其中一个参数为DATE.这将从表中返回该日期的数据.

ALTER PROCEDURE [dbo].[UserReportData] 
    @As_ONDATE Datetime 
AS 
BEGIN 
    DECLARE @REPORTDATE datetime        
    --DECLARE @OPENING INT      

    SELECT * 
    INTO #temptable
    FROM
        (SELECT 
             a.CUser_id, b.User_Id, a.U_datetime AS REPORTDATE
         FROM 
             inward_doc_tracking_trl a 
         INNER JOIN 
             user_mst b ON a.CUser_id = b.mkey
                        AND a.U_datetime = @As_ONDATE) AS x

    DECLARE Cur_1 CURSOR FOR 
         SELECT CUser_id, User_Id FROM #temptable

    OPEN Cur_1

    DECLARE @CUser_id INT
    DECLARE @User_Id INT

    FETCH NEXT FROM Cur_1 INTO @CUser_id, @User_Id

    WHILE (@@FETCH_STATUS = 0)
    BEGIN
        SELECT U_datetime 
        FROM inward_doc_tracking_trl                        
        WHERE U_datetime = …
Run Code Online (Sandbox Code Playgroud)

sql sql-server stored-procedures sql-server-2005 cursor

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

返回其中字段包含非字母数字字符的行

我正在尝试提取所有包含非字母数字字符的所有行,除了允许空格之外,所有字符都最文字。任何标点符号,方括号-方形和圆形,货币符号等

我试图适应此处给出的建议。返回sql行,其中字段仅包含非字母数字字符,但是使用not LIKE '%[a-z0-9]%'带有空格的return行。精细。我将正则表达式修改为not LIKE '%[a-z0-9 ]%',现在返回零行。我究竟做错了什么?

sql sql-server-2005

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

SQL Server 2005 - 日期添加和GETDATE不起作用

我在SQL查询中有一个非常奇怪的错误,我不明白为什么.

SELECT 
    CODCLIFOR, '', 
    DSCCONTO1, '',  
    NUMDOC, '', 
    NUMSCAD, '', 
    DATASCADENZA, '', 
    REPLACE(CONVERT(varchar, CAST(IMPORTOSCLIT AS money), 105),',','.') , '', 
    BANCAAPPCF.BANCAAPPOGGIO, '',
    TIPIEFFETTI.DESCRIZIONE
FROM 
    dbo.TABSCADENZE
INNER JOIN 
    dbo.ANAGRAFICACF ON CODCLIFOR = CODCONTO
INNER JOIN 
    dbo.TIPIEFFETTI ON TIPOEFFETTO = EFFETTO
LEFT JOIN 
    dbo.BANCAAPPCF ON CODCLIFOR = BANCAAPPCF.CODCONTO AND BANCAAPPCF.CODICE = TABSCADENZE.BANCAAPPOGGIO
WHERE    
    TIPOEFFETTO = 2  
    AND DATASCADENZA ='2016-08-05' 
    AND CODCLIFOR LIKE '%C%'
ORDER BY 
    BANCAAPPCF.BANCAAPPOGGIO DESC
Run Code Online (Sandbox Code Playgroud)

DATASCADENZAwhere条件的日期,如果我把今天的日期像'2016-08-05'我得到结果..相反,如果我使用GETDATE()DATEADD(DAY, 3, GETDATE())我没有得到结果...我不明白为什么.

你能帮助我吗?谢谢!

t-sql sql-server sql-server-2005

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

标签 统计

sql-server-2005 ×10

sql ×7

sql-server ×7

t-sql ×5

c# ×1

cursor ×1

datetime ×1

poc ×1

ssms ×1

stored-procedures ×1