javascript

java

python

c#

node.js

android

reactjs

c++

php

jquery

html

css

git

ruby-on-rails

.net

ios

sql

c

string

ruby

SQL Server-如何将表移动到另一个文件组?

我有两个大表的SQL Server 2008 Ent和OLTP数据库。 如何在不中断服务的情况下将该表移动到另一个文件组? 现在,此表中每秒插入约100-130条记录,每秒更新30-50条记录。 每个表都有大约1亿条记录和6个字段(包括一个字段地理)。

我通过谷歌寻找解决方案,但所有解决方案都包含“创建第二个表,从第一个表中插入行,删除第一个表,等等。”

我可以使用分区功能解决此问题吗? 谢谢。

trans by 2019-10-16T01:23:01Z

asp.net-为什么我应该在C#中使用int而不是字节或short

我发现了一些有关此问题的话题。 即使字节或smallint会处理数据,除非它是移动应用程序,否则大多数人似乎更喜欢在整个C#代码中使用int。 我不明白为什么。 将C#数据类型定义为与数据存储解决方案中相同的数据类型是否更有意义?

我的前提:如果我使用类型化的数据集,Linq2SQL类,POCO(一种或另一种),如果我不使我的数据类型在各层之间保持同步,则会遇到编译器数据类型转换问题。 我真的不喜欢做System.Convert,只是因为在c#代码中使用int更容易。 我一直使用所需的最小数据类型来处理数据库以及代码中的数据,以保持与数据库的接口整洁。 因此,我敢打赌我的C#代码中有75%是使用字节或短整数而不是整数,因为这就是数据库中的内容。

可能性:这是否意味着大多数只将int用于代码中所有内容的人也将int数据类型用于其sql存储数据类型,并且可能不太在意数据库的整体大小,还是在适用的情况下对代码进行system.convert?

我为什么在乎:我一直致力于自己的工作,我只想熟悉最佳实践和标准编码约定。

trans by 2019-10-15T14:43:41Z

SQL Server-从SQL中的存储过程获取RETURN值

我有一个存储过程,它的RETURN值为0或1结尾。

我想在另一个存储过程的IF语句中使用此值。

如何获取前一个存储过程的返回值并将其保存在后者的变量中?

我找不到任何相关内容。 所有问题都与如何在C#中获取RETURN值有关。

我在想,也许是这样的:

SP_Two

DECLARE @returnValue INT
SET @returnValue = EXEC SP_One

IF @returnValue = 1
BEGIN
   --do something
END
ELSE
BEGIN
   --do something else
END
trans by 2019-10-15T10:32:51Z

sql server-比较T-SQL中的日期,忽略时间p

我正在使用MS SQL 2005,我想检查两个日期是否相等,但忽略了时间部分。

我知道我可以使用DATEDIFF,但担心它的速度可能很慢-该SP在数据库中的使用率很高!

有什么建议?

编辑:大卫·安德烈斯的评论:

“比较”不仅仅包括平等”
让我意识到我的问题还不够清楚-我实际上只是在检查是否平等,仅此而已。

trans by 2019-10-15T09:05:28Z

如何使用C#监视SQL Server表更改?

我有多个应用程序正在访问同一数据库,并且如果这些应用程序之一更改了某个表中的任何内容(更新,插入),我需要得到通知。

数据库和应用程序不在同一服务器上。

trans by 2019-10-15T08:26:04Z

在SQL Server 2008 Express数据库上记录所有查询?

有没有一种方法可以告诉SQL Server 2008 Express将每个查询(包括每个SELECT查询!)记录到一个文件中?

这是一台开发机器,因此记录选择查询的负面影响不是问题。

在有人建议使用SQL事件探查器之前:Express中不提供此功能(有人知道它在Web Edition中是否可用吗?),我正在寻找一种记录查询的方法,即使我不在时也是如此。

trans by 2019-10-15T05:09:07Z

SQL Server-ORDER BY DATE首先显示NULL,然后显示最新日期

我有一个执行选择语句的存储过程。 我希望我的结果按日期字段排序,并首先显示所有具有NULL日期的记录,然后显示最近的日期。

该语句如下所示:

SELECT a,b,c,[Submission Date]
FROM someView
ORDER BY [Submission Date] ASC

现在,它将首先显示所有带有NULL提交日期的记录,但是当我进入其中具有日期值的行时,它们不是视图中的最新日期。

如果将ASC替换为DESC,则可以按所需顺序获得日期,但NULL值位于结果集的底部。

有什么方法可以构造我的查询,以便可以在顶部显示空值,然后在存在日期值时将其从最新到最旧的顺序排序。

trans by 2019-10-14T13:25:59Z

C#long类型的等效SQL Server类型是什么?

我想知道在C#中long的等效SQL Server类型是什么。

trans by 2019-10-14T08:38:19Z

如何在SQL中回滚或提交事务

在我的存储过程中,我有三个插入语句。

在重复键值插入时,前两个查询生成错误

违反PRIMARY KEY约束

第三个查询照常运行。

现在,我希望如果任何查询生成任何异常,则所有内容都应回滚。

如果任何查询都没有生成任何异常,则应提交该异常。

declare @QuantitySelected as char
    set @QuantitySelected = 2

    declare @sqlHeader as varchar(1000)
    declare @sqlTotals as varchar(1000)
    declare @sqlLine as varchar(1000)

    select @sqlHeader = 'Insert into tblKP_EstimateHeader '
    select @sqlHeader = @sqlHeader + '(CompanyID,CompanyName,ProjectName,EstimateID,EstimateHeader,QuoteDate,ValidUntil,RFQNum,Revision,Contact,Status,NumConfigurations) '
    select @sqlHeader = @sqlHeader + ' select CompanyID,CompanyName,ProjectName,EstimateID,EstimateHeader,QuoteDate,ValidUntil,RFQNum,Revision,Contact,Status,NumConfigurations '
    select @sqlHeader = @sqlHeader +  'from V_EW_Estimate_Header where EstimateID = 2203'



    select @sqlTotals = 'Insert into tblKP_Estimate_Configuration_Totals '
    select @sqlTotals = @sqlTotals + '(ConfigRecId,RecId,SellQty,ConfigNum,ConfigDesc,SortOrder,OptionsInMainPrice,MarkupPctQty,'
    select @sqlTotals = @sqlTotals + ' SellPriceQty,RubberStamp,OptPriceQty,StatusRecid,LastUpdate_Date,LastUpdate_User,TotalCost,QuantityBracketSelected)'
    select @sqlTotals = @sqlTotals + ' select ConfigRecId,RecId,SellQty' + @QuantitySelected + ',ConfigNum,ConfigDesc,SortOrder,OptionsInMainPrice'
    select @sqlTotals = @sqlTotals + ' ,MarkupPctQty' + @QuantitySelected + ',SellPriceQty' + @QuantitySelected + ',RubberStamp,OptPriceQty' + @QuantitySelected + ',StatusRecid,LastUpdate_Date,LastUpdate_User,TotalCost' + @QuantitySelected + ',' + @QuantitySelected
    select @sqlTotals = @sqlTotals + ' from v_EW_Estimate_Configuration_Totals where ConfigRecId = -3'


    select @sqlLine = 'Insert into tblKP_Estimate_Configuration_Lines'
    select @sqlLine = @sqlLine + '(MstrRfqRecId,RfqRecId,RfqLineRecId,CompanyId,VendorQuoteNum,LineGrp,LineNum,StatusRecId,'
    select @sqlLine = @sqlLine + ' LineDesc,LineSize,LineMatl,LineDeco,LineFinish,CopyFromRecId,PerPieceCost,IsOptional,'
    select @sqlLine = @sqlLine + ' CopyToNewRev,RecId,UnitPrice,LineQty,LinePrice,CustOrVend,SellQty1,RfqNum,ConfigLineIsOptional,ConfigLinePerPieceCost,ConfigLineRecid,SellPrice,SaleQty)'
    select @sqlLine = @sqlLine + ' select distinct MstrRfqRecId,RfqRecId,RfqLineRecId,CompanyId,VendorQuoteNum,LineGrp,LineNum,'
    select @sqlLine = @sqlLine + ' StatusRecId,LineDesc,LineSize,LineMatl,LineDeco,LineFinish,CopyFromRecId,PerPieceCost,IsOptional,'
    select @sqlLine = @sqlLine + ' CopyToNewRev,RecId,UnitPrice' + @QuantitySelected + ',LineQty' + @QuantitySelected + ', isnull(LinePrice' + @QuantitySelected + ', 0.0000),CustOrVend,SellQty' + @QuantitySelected + ',RfqNum,ConfigLineIsOptional,ConfigLinePerPieceCost,ConfigLineRecid,SellPrice' + @QuantitySelected + ',SaleQty' + @QuantitySelected
    select @sqlLine = @sqlLine + ' from v_EW_EstimateLine  where rfqlinerecid in (select RfqLineRecID from kp_tblVendorRfqConfigLine where ConfigRecID = -3) '

    exec( @sqlHeader)
    exec(@sqlTotals)
    exec(@sqlLine)
trans by 2019-10-13T04:55:36Z

tsql-连接到另一个SQL Server的T-SQL语法是什么?

如果需要将存储过程(SP)从一台SQL Server复制到另一台SQL Server,请右键单击SSMS中的SP,然后选择“脚本存储过程为>创建到>新查询编辑器窗口”。 然后,通过右键单击该窗口并选择“连接”>“更改连接...”,然后选择新服务器和F5在新服务器上运行创建,来更改连接。

所以我的问题是“连接到另一个SQL Server的T-SQL语法是什么?” 这样我就可以将其粘贴到create脚本和F5的顶部以运行它,它将切换到新服务器并运行create脚本。

在输入问题时,我意识到,如果我为您尝试做的事情提供了背景知识,您可能会想出一种更快更好的方法来实现这一目标。

trans by 2019-10-13T03:41:39Z

asp.net-SQL的默认端口

我需要知道以下服务的默认端口设置

  1. SQL服务器
  2. SQL浏览器
  3. SQL报告服务
  4. SQL分析服务

我需要了解这些服务针对不同版本的SQL Server(2000、2005、2008)的端口设置

还请让我知道默认端口设置是否会根据sql server版本而更改

提前致谢。

trans by 2019-10-12T19:17:27Z

sql-我可以添加不带DEFAULT值的非null列

是否可以添加我指定为NOT NULL的列,我不想指定DEFAULT值,但是MS-SQL 2005说:

ALTER TABLE只允许添加可以包含空值或指定DEFAULT定义的列,或者要添加的列是Identity或timestamp列,或者如果不满足任何先前条件,则该表必须为空才能允许添加 本专栏的内容。 无法将列“ test”添加到非空表“ shiplist”中,因为它不满足这些条件。

如果是,请让我知道语法,如果否,请说明原因。

trans by 2019-10-12T08:06:34Z

为什么在SQL Server中使用游标被认为是不好的做法?

我早在SQL 7天内就已经知道一些性能原因,但是在SQL Server 2005中是否仍然存在相同的问题? 如果在存储过程中有一个要单独处理的结果集,则游标还是一个不好的选择吗? 如果是这样,为什么?

trans by 2019-10-12T03:19:19Z

c#-在SQL LIKE子句中使用SqlParameter不起作用

我有以下代码:

const string Sql = 
    @"select distinct [name] 
      from tblCustomers 
      left outer join tblCustomerInfo on tblCustomers.Id = tblCustomerInfo.CustomerId  
      where (tblCustomer.Name LIKE '%@SEARCH%' OR tblCustomerInfo.Info LIKE '%@SEARCH%');";

using (var command = new SqlCommand(Sql, Connection))
{       
    command.Parameters.AddWithValue("@SEARCH", searchString);
    ...
}

这行不通,我也尝试这样做:

const string Sql = 
    @"select distinct [name] 
     from tblCustomers 
     left outer join tblCustomerInfo on tblCustomers.Id = tblCustomerInfo.CustomerId  
     where (tblCustomer.Name LIKE @SEARCH OR tblCustomerInfo.Info LIKE @SEARCH );";

using (var command = new SqlCommand(Sql, Connection))
{       
    command.Parameters.AddWithValue("@SEARCH", "'%" + searchString + "%'");
    ...
}

但这并不奏效。 怎么了? 有什么建议么?

trans by 2019-10-12T02:11:24Z

asp.net-共享主机中的“由于'LOG_BACKUP',数据库的事务日志已满”

我在共享托管计划中有一个使用EntityFramework codefirst方法的Asp.Net MVC 5网站。 它使用开源WebbsitePanel作为控制面板,并且它的SQL Server面板有所限制。 今天,当我想编辑数据库时,遇到了此错误:

The transaction log for database 'db_name' is full due to 'LOG_BACKUP'

我四处搜索,发现了很多与此相关的答案,但问题是他们建议在数据库上运行查询。 我尝试跑步

db.Database.ExecuteSqlCommand("ALTER DATABASE db_name SET RECOVERY SIMPLE;");

与视觉工作室(在HomeController上),但出现以下错误:

System.Data.SqlClient.SqlException: ALTER DATABASE statement not allowed within multi-statement transaction.

我该如何解决我的问题? 我应该联系支持团队(对我的房东来说有点差)还是可以自己解决这个问题?

trans by 2019-10-11T17:51:06Z

带有标识列的SqlBulkCopy插入

我正在使用SqlBulkCopy对象将数百万个生成的行插入数据库中。 唯一的问题是我要插入的表具有一个标识列。 我尝试将SqlBulkCopyOptions设置为SqlBulkCopyOptions.KeepIdentity,并将标识列设置为0DbNull.Valuenull。所有这些均无用。 我觉得如果有人能启发我,我会错过一些非常简单的事情,那就太好了。 谢谢!

编辑澄清一下,我没有在我要导入的SqlBulkCopy中设置的标识值。 我希望将它们作为导入的一部分生成。

编辑2     这是我用来创建基础SqlBulkCopy对象的代码。

SqlBulkCopy sbc = GetBulkCopy(SqlBulkCopyOptions.KeepIdentity);
sbc.DestinationTableName = LOOKUP_TABLE;

private static SqlBulkCopy GetBulkCopy(SqlBulkCopyOptions options = 
    SqlBulkCopyOptions.Default) 
{
    Configuration cfg = WebConfigurationManager.OpenWebConfiguration("/RSWifi");
    string connString =
    cfg.ConnectionStrings.ConnectionStrings["WifiData"].ConnectionString;
    return new SqlBulkCopy(connString, options);
}
trans by 2019-10-11T16:05:33Z

管道的另一端没有进程(SQL Server 2012)

我有这个错误:

A connection was successfully established with the server, but then an error occurred
during the login process. (provider: Shared Memory Provider, error: 0 - No process is
on the other end of the pipe.)

(Microsoft SQL Server, Error: 233)

我知道,此站点上也存在类似的问题,答案是启用TCP / IP和管道。但是我同时启用了两者,但仍然无法正常工作:

MSSQL error

我正在使用Microsoft SQL Server 2012,并且用户具有完全权限。

trans by 2019-10-11T12:13:51Z

将MS Excel数据粘贴到SQL

我在Excel中有一堆行要粘贴到MS SQL的新表中。 有没有简单的方法?

trans by 2019-10-11T04:55:43Z

SQL Server-使用merge..output获取source.id和target.id之间的映射

非常简化,我有两个表Source和Target。

declare @Source table (SourceID int identity(1,2), SourceName varchar(50))
declare @Target table (TargetID int identity(2,2), TargetName varchar(50))

insert into @Source values ('Row 1'), ('Row 2')

我想将所有行从from_table_name移动到@Target,并知道每个TargetChildTargetChild.TargetID,因为还有表SourceChildTargetChild也需要复制,我需要将新的TargetID添加到TargetID中至TargetID FK列中。

有两种解决方案。

  1. 使用while循环或游标一次将一行(RBAR)插入到Target并使用from_table_name填充@Target的FK。
  2. from_table_name中添加一个临时列,并插入@Target。然后,您可以加入该列,以在TargetChild中为FK获取TargetChild.TargetID
  3. from_table_name表示@Target,并自行处理分配新值。 您将获得一个范围,然后在TargetChild.TargetID中使用。

我并不喜欢它们中的任何一个。 到目前为止,我使用的是游标。

我真正想做的是使用insert语句的2563703245793393395712子句。

insert into @Target(TargetName)
output inserted.TargetID, S.SourceID
select SourceName
from @Source as S

但这是不可能的

The multi-part identifier "S.SourceID" could not be bound.

但是合并是可能的。

merge @Target as T
using @Source as S
on 0=1
when not matched then
  insert (TargetName) values (SourceName)
output inserted.TargetID, S.SourceID;

结果

TargetID    SourceID
----------- -----------
2           1
4           3

我想知道您是否使用过? 如果您对解决方案有任何想法或发现任何问题? 在简单的场景中它可以正常工作,但是当由于复杂的源查询而使查询计划变得非常复杂时,可能会发生一些丑陋的事情。 最糟糕的情况是TargetID / SourceID对实际上不匹配。

MSDN可以这样说一下output子句的from_table_name

是列前缀,用于指定DELETE,UPDATE或MERGE语句的FROM子句中包含的表,该表用于指定要更新或删除的行。

由于某些原因,他们不会说“要插入,更新或删除的行”,而只会说“要更新或删除的行”。

欢迎任何想法,非常感谢您对原始问题的完全不同的解决方案。

trans by 2019-10-10T22:27:06Z

在SQL Server中存储百分比值的最佳方法应该是什么?

我想在SQL Server中存储一个代表百分比的值,哪种数据类型应该是首选?

trans by 2019-10-10T00:28:15Z

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 下一页 共42页