Tag: sql server

SQL NVARCHAR和VARCHAR限制

所有,我有一个大的(不可避免的)dynamicSQL查询。 由于select标准中的字段数量,包含dynamicSQL的string正在增长超过4000个字符。 现在我明白NVARCHAR(MAX)有一个最大值为4000的设置,但是在Server Profiler中查看执行的SQL DELARE @SQL NVARCHAR(MAX); SET @SQL = 'SomeMassiveString > 4000 chars…'; EXEC(@SQL); GO 似乎工作(!?),另一个查询也很大,它会抛出一个错误,这是4000的限制(!?),它基本上修剪所有的SQL后4000限制,留下一个语法错误。 尽pipe在剖析器中,它完全显示了这个dynamicSQL查询(!?)。 到底发生了什么,我应该只是将这个@SQLvariables转换为VARCHAR并继续使用它? 谢谢你的时间。 PS。 能够打印超过4000个字符来查看这些大问题也是很好的。 以下限制为4000 SELECT CONVERT(XML, @SQL); PRINT(@SQL); 还有没有其他酷的方式?

多个INSERT语句与单个INSERT和多个VALUES

我正在运行使用1000个INSERT语句之间的性能比较: INSERT INTO T_TESTS (TestId, FirstName, LastName, Age) VALUES ('6f3f7257-a3d8-4a78-b2e1-c9b767cfe1c1', 'First 0', 'Last 0', 0) INSERT INTO T_TESTS (TestId, FirstName, LastName, Age) VALUES ('32023304-2e55-4768-8e52-1ba589b82c8b', 'First 1', 'Last 1', 1) … INSERT INTO T_TESTS (TestId, FirstName, LastName, Age) VALUES ('f34d95a7-90b1-4558-be10-6ceacd53e4c4', 'First 999', 'Last 999', 999) ..versus使用1000个值的单个INSERT语句: INSERT INTO T_TESTS (TestId, FirstName, LastName, Age) VALUES ('db72b358-e9b5-4101-8d11-7d7ea3a0ae7d', 'First […]

总是使用nvarchar(MAX)有什么缺点吗?

在SQL Server 2005中,是否有任何缺点,使所有字符字段nvarchar(MAX),而不是明确指定一个长度,例如nvarchar(255)? (除了显而易见的,你不能限制数据库级别的字段长度)

有效的方式来实现分页

我应该使用LINQ的Skip()和Take()方法进行分页,还是使用SQL查询来实现我自己的分页? 哪个效率最高? 为什么我会select一个呢? 我正在使用SQL Server 2008,ASP.NET MVC和LINQ。

如何使用INNER JOIN与SQL Server删除?

我想在SQL Server 2008中使用INNER JOIN进行删除。 但是我得到这个错误, Msg 156,Level 15,State 1,Line 15 关键字“INNER”附近的语法不正确。 我的代码: DELETE FROM WorkRecord2 INNER JOIN Employee ON EmployeeRun=EmployeeNo WHERE Company = '1' AND Date = '2013-05-06'

SQL Server子查询返回多个值。 当子查询遵循=,!=,<,<=,>,> =时,这是不允许的

我运行以下查询: SELECT orderdetails.sku, orderdetails.mf_item_number, orderdetails.qty, orderdetails.price, supplier.supplierid, supplier.suppliername, supplier.dropshipfees, cost = (SELECT supplier_item.price FROM supplier_item, orderdetails, supplier WHERE supplier_item.sku = orderdetails.sku AND supplier_item.supplierid = supplier.supplierid) FROM orderdetails, supplier, group_master WHERE invoiceid = '339740' AND orderdetails.mfr_id = supplier.supplierid AND group_master.sku = orderdetails.sku 我得到以下错误: 消息512,级别16,状态1,行2子查询返回多个值。 当子查询遵循=,!=,<,<=,>,> =或子查询用作expression式时,这是不允许的。 有任何想法吗?

在SQL Server中将varchar转换为datetime

如何在SQL Server 2008 mmddyyyy格式的string转换为datetime时间? 我的目标列在DateTime 我已经尝试使用Convert和大部分Date样式值,但是我收到一条错误消息: '将varchar数据types转换为date时间数据types导致超出范围的值。

SQLnetworking接口,错误:50 – 发生本地数据库运行时错误。 无法创build自动实例

我正在尝试构build一个ASP.NET MVC 5 Web应用程序,它在App_Data文件夹中有一个MyDatabase.mdf文件。 我已经安装了一个LocalDb实例的SQL Server 2014 Express。 我可以使用服务器资源pipe理器编辑数据库表,但是当我debugging应用程序并转到需要数据库的页面时,出现以下错误。 与SQL Serverbuild立连接时发生networking相关或特定于实例的错误。 服务器未find或无法访问。 validation实例名称是否正确,并将SQL Serverconfiguration为允许远程连接。 (提供程序:SQLnetworking接口,错误:50 – 发生本地数据库运行时错误。无法创build自动实例。请参阅Windows应用程序事件日志以获取错误详细信息。 所以我查看了Application下的事件查看器,只能看到一个警告一遍又一遍。 caching压缩内容C:\ Users \ User1 \ AppData \ Local \ Temp \ iisexpress \ IIS Temporary Compressed Files \ Clr4IntegratedAppPool指定的目录无效。 静态压缩被禁用。 所以我尝试重新启动服务器,仍然没有去。 与之前一样的错误50。 我在Models下创build了一个类,其中有一个名为Post的类。 namespace MyApplication.Models { public class Post { public int Id { get; set; } […]

JDBC连接失败,错误:到主机的TCP / IP连接失败

我想用SQL server 2012连接Java类文件。我已经使用SQL Server身份validationlogin。 但是我正在接收连接错误。 错误:与主机127.0.0.1,端口1433的TCP / IP连接失败。 错误:“Connection refused:connect。validation连接属性确保主机上正在运行SQL Server实例并接受端口上的TCP / IP连接请确保与端口的TCP连接没有被防火墙阻止“。 我的代码— Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); //1. Register your driver //2. get the connection object //Connection con = DriverManager.getConnection("jdbc:sqlserver://localhost;databaseName=aysha","sa","admin"); Connection con = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1;databaseName=aysha","user=sa","password=admin"); //"jdbc:sqlserver://127.0.0.1:1433; Instance=SQL2008;" + "databaseName=MB;user=sa;password=123;"; //Connection con = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=aysha","sa" , "password"); //3. Prepare a statement Statement stmt = con.createStatement(); //4. Write the query` String […]

如何在一列中返回多个值(T-SQL)?

我有一个表UserAliases ( UserId, Alias )与每个用户多个别名。 我需要查询它并返回给定用户的所有别名,诀窍是将它们全部返回到一列中。 例: UserId/Alias 1/MrX 1/MrY 1/MrA 2/Abc 2/Xyz 我想以下面的格式查询结果: UserId/Alias 1/ MrX, MrY, MrA 2/ Abc, Xyz 谢谢。 我正在使用SQL Server 2005。 ps实际的T-SQL查询将不胜感激:)