Questions tagged «sql-server»

Microsoft SQL Server是一个关系数据库管理系统(RDBMS)。将此标签用于所有SQL Server版本,包括Compact,Express,Azure,Fast-track,APS(以前称为PDW)和Azure SQL DW。请勿将此标签用于其他类型的DBMS(MySQL,PostgreSQL,Oracle等)。除非该标签与数据库直接相关,否则请勿将其用于软件和移动开发问题。

12
将表数据从一个SQL Server导出到另一个
我有两个SQL Server(均为2005版)。 我想将几个表从一个迁移到另一个。 我试过了: 在源服务器上,我右键单击数据库,选择Tasks/Generate scripts。问题在于,在此之下Table/View options没有Script data选择。 然后,我用来Script Table As/Create script生成SQL文件,以便在目标服务器上创建表。但是我仍然需要所有数据。 然后我尝试使用: SELECT * INTO [destination server].[destination database].[dbo].[destination table] FROM [source server].[source database].[dbo].[source table] 但是我得到了错误: 对象包含的前缀数量超过了最大数量。最大值为2。 有人可以为我指出解决问题的正确方法吗?

9
SQL按月和年分组
我不确定在下面的SQL查询中应该写些什么来显示“日期”列,例如:“ month-year”-“ 9-2011”。 SELECT MONTH(date) + '.' + YEAR(date) AS Mjesec, SUM(marketingExpense) AS SumaMarketing, SUM(revenue) AS SumaZarada FROM [Order] WHERE (idCustomer = 1) AND (date BETWEEN '2001-11-3' AND '2011-11-3') GROUP BY MONTH(date), YEAR(date) 因此,我要做的是将第一列中的数据更改为显示月份和年份,而不是仅显示月份。
72 sql  sql-server 


6
如何获取所有数据库用户的列表
我将获取所有有权访问MS SQL Server中特定数据库的用户的列表,包括Windows用户和“ sa”。基本上,我希望列表看起来像显示的样子SQL Server Management Studio(即,展开时显示的列表[databse] -> Security -> Users),但有一个重要的例外:我不想'dbo'在列表中看到。相反,我希望看到拥有该数据库的实际用户。因此,例如,如果'sa'是'dbo',则'sa'必须将其包含在列表中,而不是'dbo'。另一个不容错过的注意事项是,该列表中的列表SQL Server Management Studio通常显示Windows用户和SQL用户,而且我希望这些用户也包括在内。 到目前为止,我已经能够提出以下查询: SELECT * FROM sys.database_principals where (type='S' or type = 'U') 该查询几乎是正确的,但问题是它不满足'dbo'条件。 如何更改此查询或应该使用另一个查询?
72 sql-server 

21
使用函数获取两个日期之间的日期列表
我的问题类似于此MySQL问题,但适用于SQL Server: 是否存在将返回两个日期之间的天数列表的函数或查询?例如,假设有一个名为ExplodeDates的函数: SELECT ExplodeDates('2010-01-01', '2010-01-13'); 这将返回具有以下值的单列表: 2010-01-01 2010-01-02 2010-01-03 2010-01-04 2010-01-05 2010-01-06 2010-01-07 2010-01-08 2010-01-09 2010-01-10 2010-01-11 2010-01-12 2010-01-13 我在想日历/数字表可以在这里为我提供帮助。 更新资料 我决定看看提供的三个代码答案,执行结果(占总批处理的百分比)是: 罗伯·法利(Rob Farley)的答案:18% StingyJack的答案:41% KM的答案:41% 越低越好 我接受了Rob Farley的答案,因为它是最快的,即使数字表解决方案(KM和StingyJack都在他们的答案中使用)是我的最爱。Rob Farley的速度快了三分之二。 更新2 Alivia的回答更为简洁。我已更改了接受的答案。
71 sql-server  date 


9
在SQL Server中设置日期
在SQL Server中,如何将DATETIME“设置”到秒/分钟/小时/天/年? 假设我的日期为2008-09-17 12:56:53.430,那么flooring的输出应为: 年份:2008-01-01 00:00:00.000 月:2008-09-01 00:00:00.000 日期:2008-09-17 00:00:00.000 时间:2008-09-17 12:00:00.000 分钟:2008-09-17 12:56:00.000 第二名:2008-09-17 12:56:53.000
71 sql-server  tsql 



6
将列添加到表,然后在事务内更新它
我正在创建一个将在MS SQL服务器中运行的脚本。该脚本将运行多个语句,并且需要进行事务处理,如果其中一个语句失败,则将停止整体执行并回滚所有更改。 在发出ALTER TABLE语句向表中添加列,然后更新新添加的列时,我在创建此事务模型时遇到了麻烦。为了立即访问新添加的列,我使用GO命令执行ALTER TABLE语句,然后调用我的UPDATE语句。我面临的问题是我无法在IF语句中发出GO命令。在我的交易模型中,IF语句很重要。这是我尝试运行的脚本的示例代码。还请注意,发出GO命令将丢弃@errorCode变量,并且需要在使用之前在代码中声明下来(此代码不在下面的代码中)。 BEGIN TRANSACTION DECLARE @errorCode INT SET @errorCode = @@ERROR -- ********************************** -- * Settings -- ********************************** IF @errorCode = 0 BEGIN BEGIN TRY ALTER TABLE Color ADD [CodeID] [uniqueidentifier] NOT NULL DEFAULT ('{00000000-0000-0000-0000-000000000000}') GO END TRY BEGIN CATCH SET @errorCode = @@ERROR END CATCH END …


6
如何通过SQL Server中的SQL注入来克服单引号引起的卫生问题?
首先,我很清楚参数化查询是最好的选择,但是我在问什么使下面介绍的策略易受攻击。人们坚持认为以下解决方案无效,因此我在寻找一个示例说明为何不可行。 如果动态SQL在发送到SQL Server之前使用以下转义代码内置在代码中,则哪种注入方式可以克服这种情况? string userInput= "N'" + userInput.Replace("'", "''") + "'" 这里回答了类似的问题,但我认为任何答案都不适用于这里。 在SQL Server中,不能用“ \”转义单引号。 我相信使用Unicode的SQL走私(在此处概述)会因生成的字符串被单引号前面的N标记为Unicode而受到阻碍。据我所知,SQL Server不会自动将其他字符集转换为单引号。没有单引号的转义,我认为注入是不可能的。 我也不认为String Truncation是可行的方法。根据Microsoft的说法, SQL Server肯定不会进行截断,因为一个的最大大小为nvarchar2GB 。2 GB的字符串在大多数情况下是不可行的,在我的情况下是不可能的。 二阶注入是可能的,但在下列情况下是可能的: 使用上述方法对进入数据库的所有数据进行清理 数据库中的值永远不会附加到动态SQL中(为什么只要可以在任何动态SQL字符串的静态部分中引用表值,您仍然会这样做吗?)。 我并不是说这比使用参数化查询更好或替代,但是我想知道我概述的内容是多么容易受到攻击。有任何想法吗?

16
从C#中的存储过程获取返回值
我有以下查询: set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go ALTER PROCEDURE [dbo].[Validate] @a varchar(50), @b varchar(50) output AS SET @Password = (SELECT Password FROM dbo.tblUser WHERE Login = @a) RETURN @b GO 这样编译就可以了。我想执行此查询并获取返回值。我的代码如下: SqlConnection SqlConn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["MyLocalSQLServer"].ConnectionString.ToString()); System.Data.SqlClient.SqlCommand sqlcomm = new System.Data.SqlClient.SqlCommand("Validate", SqlConn); string returnValue = string.Empty; try { SqlConn.Open(); …
71 c#  sql  sql-server 

4
根据单个不同的列选择唯一的行
我想选择具有的行distinct email,请参见下面的示例表: +----+---------+-------------------+-------------+ | id | title | email | commentname | +----+---------+-------------------+-------------+ | 3 | test | rob@hotmail.com | rob | | 4 | i agree | rob@hotmail.com | rob | | 5 | its ok | rob@hotmail.com | rob | | 6 | hey | rob@hotmail.com | rob …
71 sql-server  tsql 

6
围绕单个语句的事务有什么作用?
我了解交易对于协调一对更新可能会很有用。我不了解的是将单个语句包装在事务中,这是我见过的90%。实际上,在现实生活中,以我的经验,找到一系列逻辑相关的事务(每个事务都包装在自己的事务中)是很常见的,但是整个事务并没有包装。 在MS-SQL中,在事务中包装单选,单更新,单插入或单删除有什么好处? 我怀疑这是迷信编程。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.