标签: sql-server-2005

52
推荐指数
4
解决办法
5万
查看次数

数据库部署策略(SQL Server)

我正在寻找一种方法来进行日常部署并使数据库脚本与发布保持一致.

目前,我们有一个相当不错的部署源代码的方式,我们有单位代码覆盖,持续集成和回滚程序.

问题是使数据库脚本与发布保持一致.每个人似乎都尝试在测试数据库上运行脚本,然后在实时运行它们,当ORM映射更新(即更改生效)时,它会选择新列.

第一个问题是没有任何脚本可以写在任何地方,通常每个人都"尝试"将它们放入Subversion文件夹,但是一些懒惰的人只是在现场运行脚本,大多数时候没人知道谁做了什么到数据库.

第二个问题是我们有4个测试数据库,它们总是脱节,真正排列它们的唯一方法是从实时数据库进行恢复.

我非常相信,这样的流程需要简单,直接且易于使用,以帮助开发人员,而不是阻碍他们.

我正在寻找的技术/想法使开发人员想要记录他们的数据库脚本很容易,因此它们可以作为发布过程的一部分运行.开发人员希望遵循的流程.

任何故事,用例甚至链接都会有所帮助.

c# svn asp.net visual-studio-2005 sql-server-2005

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

是SQL Server中必需的主键吗?

这可能是一个非常天真和愚蠢的问题,但无论如何我都会问它

我有一个包含多个字段的表,其中没有一个是唯一的,还有一个主键,显然是.

此表通过非唯一字段定期访问,但没有用户SP或进程通过主键访问数据.那么主键是必要的吗?它是在幕后使用的吗?删除它会影响性能的正面还是负面?

sql sql-server sql-server-2005

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

datetime和timestamp之间有什么区别

Sql Server中的datetime和timestamp数据类型有什么区别?

sql-server-2005

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

web.config中的SQL providerName

我们在web.config中使用ASP.NET(框架2)并设置数据库连接字符串(SQL2005).

我们目前正在使用" providerName=SqlServer".

我们所有的数据访问都是使用System.Data.SqlClient- 我们应该改为providerName=System.Data.SqlClient吗?我在网上找到了这个providerName的很多例子,但很少解释providerName = SqlServer实际意味着什么.

有区别吗?我担心我们当前指定的providerName实际上引用了遗留(也许更慢)的客户端,或者是否有比SqlClient更高效的客户端用于ASP.NET?

asp.net connection-string sql-server-2005

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

列出特定日期后的行

我的数据库中有一个名为"dob"的列,类型为datetime.如何在SQL Server 2005中的特定DoB之后选择所有行?

sql sql-server sql-server-2005 sql-server-2008

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

SQL查询,将SELECT存储在局部变量中

我创建了一个查询,重用了一些结果.我搜索一种方法将结果放入变量并使用它.

一个简单的方法来看看我想要的东西看起来像这样 - 我想要这个:

DECLARE @result1 ?????

SET @result1 = SELECT a,b,c FROM table1
SELECT a AS val FROM @result1
UNION
SELECT b AS val FROM @result1
UNION
SELECT c AS val FROM @result1
Run Code Online (Sandbox Code Playgroud)

不是这个 :

 SELECT a AS val FROM (SELECT a,b,c FROM table1)
 UNION
 SELECT b AS val FROM (SELECT a,b,c FROM table1)
 UNION
 SELECT c AS val FROM (SELECT a,b,c FROM table1)
Run Code Online (Sandbox Code Playgroud)

这不是我关心的这个查询的结果,而是:

  1. 停止选择结果很多次 - 在我的样本中,我重新选择了3次表

  2. 查询@result1通常要复杂得多.因此,使用变量,代码将更清晰.

也许我想要太多 - 或者有一种局部变量.或者使用类型表并在里面设置数据.

你有什么建议我的?

谢谢

sql-server-2005

51
推荐指数
4
解决办法
11万
查看次数

左边加入的最近记录

想象一下,我在SqlServer中有以下3个表:

Customer (CustomerID, FirstName, LastName)
Address (AddressID, CustomerID, Line1, City, State)
Product (ProductID, CustomerID, Description)
Run Code Online (Sandbox Code Playgroud)

客户可以拥有多个送货地址和多个产品.

我想要做的是列出最新地址记录确定州的每个州的客户数量.例如"每个州有多少客户上次收到产品?".因此,我对客户以前的任何地址记录都不感兴趣,只对最近的地址记录感兴趣(由AddressID确定).

State | Number of Customers
--------------------------
CA    | 32
GA    | 12
TX    | 0
OH    | 18
Run Code Online (Sandbox Code Playgroud)

我通常会这样做:

SELECT a.State, count(c.CustomerID)
FROM Product p
INNER JOIN Customer c ON c.CustomerID = p.CustomerID
LEFT JOIN Address a ON a.CustomerID = c.CustomerID
WHERE p.ProductID = 101
GROUP BY a.State
Run Code Online (Sandbox Code Playgroud)

但是,由于客户可能有多个地址,客户只会被计入最新地址记录的状态?

PS以上纯粹是一个示例场景,可以轻松解释我想要实现的连接,并不反映实际的系统设计.

sql sql-server sql-server-2005

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

从没有主键的SQL表中删除重复记录

我在下面的表格中有以下记录

create table employee
(
 EmpId number,
 EmpName varchar2(10),
 EmpSSN varchar2(11)
);

insert into employee values(1, 'Jack', '555-55-5555');
insert into employee values (2, 'Joe', '555-56-5555');
insert into employee values (3, 'Fred', '555-57-5555');
insert into employee values (4, 'Mike', '555-58-5555');
insert into employee values (5, 'Cathy', '555-59-5555');
insert into employee values (6, 'Lisa', '555-70-5555');
insert into employee values (1, 'Jack', '555-55-5555');
insert into employee values (4, 'Mike', '555-58-5555');
insert into employee values (5, 'Cathy', '555-59-5555');
insert into employee values (6 ,'Lisa', …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server-2005 duplicate-removal

50
推荐指数
7
解决办法
11万
查看次数

50
推荐指数
3
解决办法
15万
查看次数