博客 (114)

第一步:生成执行语句

declare @name sysname
declare csr1 cursor
for
select TABLE_NAME from INFORMATION_SCHEMA.TABLES
open csr1

FETCH NEXT FROM csr1 INTO @name
while (@@FETCH_STATUS=0)
BEGIN
SET @name='旧架构名.' + @name

print 'ALTER SCHEMA 新架构名 TRANSFER ' + @name
fetch next from csr1 into @name
END
CLOSE csr1

第二步:执行上面命令生成的结果

xoyozo 15 年前
4,877
今天在用远程连接Mysql服务器的数据库,不管怎么弄都是连接不到,错误代码是1130,ERROR 1130: Host 192.168.2.159 is not allowed to connect to this MySQL server
猜想是无法给远程连接的用户权限问题。结果这样子操作mysql库,即可解决。在本机登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称'%'。。

mysql -u root -p
mysql>use mysql;
mysql>select 'host' from user where user='root';
mysql>update user set host = '%' where user ='root';
mysql>flush privileges;
mysql>select 'host' from user where user='root';
第一句是以权限用户root登录
第二句:选择mysql库
第三句:查看mysql库中的user表的host值(即可进行连接访问的主机/IP名称)
第四句:修改host值(以通配符%的内容增加主机/IP地址),当然也可以直接增加IP地址
第五句:刷新MySQL的系统权限相关表
第六句:再重新查看user表时,有修改。。
重起mysql服务即可完成。
6,611


id  name  score
1    李四      89   
2    王五      98
3    张三      90
4    王五      79
5    李四      97
6    张三      89

输出:
 姓名  成绩
 张三     90
 李四     97
 王五     98

sql语句要怎么写?

答案:

SELECT MAX([t0].[score]) AS [最高分], [t0].[name] AS [姓名]
FROM [dbo].[表] AS [t0]
GROUP BY [t0].[name]

xoyozo 16 年前
3,638
在尝试从远程计算机连接到 Microsoft SQL Server 2005 实例时,可能会接收到错误消息。在使用任何程序连接到 SQL Server 时都可能会发生此问题。例如,在使用 SQLCMD 实用工具连接到 SQL Server 时收到以下错误消息:
Sqlcmd:错误:Microsoft SQL Native Client:建立到服务器的连接时发生错误。连接到 SQL Server 2005 时,默认设置 SQL Server 不允许远程连接这个事实可能会导致失败。
如果没有将 SQL Server 2005 配置为接受远程连接,则可能会发生此问题。默认情况下,SQL Server 2005 Express Edition 和 SQL Server 2005 Developer Edition 不允许远程连接。若要配置 SQL Server 2005 以允许远程连接,请完成以下所有步骤:
  • 在您要从远程计算机连接到的 SQL Server 实例上启用远程连接。
  • 打开 SQL Server Browser 服务。
  • 配置防火墙以允许与 SQL Server 和 SQL Server Browser 服务相关的网络通讯。
本文介绍如何完成这些步骤中的每一步。

若要在 SQL Server 2005 实例上启用远程连接并打开 SQL Server Browser 服务,请使用 SQL Server 2005 外围应用配...

若要在 SQL Server 2005 实例上启用远程连接并打开 SQL Server Browser 服务,请使用 SQL Server 2005 外围应用配置器工具。在安装 SQL Server 2005 时会安装外围应用配置器工具。

为 SQL Server 2005 Express Edition 或 SQL Server 2005 Developer Edition 启用远程连接

必须为要从远程计算机连接到的每个 SQL Server 2005 实例启用远程连接。为此,请按照下列步骤操作:
  1. 单击“开始”,依次指向“程序”、“Microsoft SQL Server 2005”和“配置工具”,然后单击“SQL Server 外围应用配置器”。
  2. 在“SQL Server 2005 外围应用配置器”页上,单击“服务和连接的外围应用配置器”。
  3. 在“服务和连接的外围应用配置器”页上,展开“数据库引擎”,依次单击“远程连接”和“本地连接和远程连接”,单击适用于您的环境的相应协议,然后单击“应用”。

    注意:请在接收到以下消息时单击“确定”:
    直到重新启动数据库引擎服务后,对连接设置所做的更改才会生效。
  4. 在“服务和连接的外围应用配置器”页上,展开“数据库引擎”,依次单击“服务”和“停止”,等待 MSSQLSERVER 服务停止,然后单击“启动”以重新启动 MSSQLSERVER 服务。

启用 SQL Server Browser 服务

如果您是通过使用实例名称来运行 SQL Server 2005 并且在连接字符串中没有使用特定的 TCP/IP 端口号,则必须启用 SQL Server Browser 服务以允许远程连接。例如,使用 <计算机名>\SQLEXPRESS 的默认实例名称安装的 SQL Server 2005 Express。不管您正在运行多少个 SQL Server 2005 实例,只需要启用一次 SQL Server Browser 服务。若要启用 SQL Server Browser 服务,请执行以下步骤。

重要说明:这些步骤可能会增加您的安全风险。这些步骤还可能导致您的计算机或网络更易于受到恶意用户或恶意软件(如病毒)的攻击。我们之所以推荐本文介绍的这一过程,是为了使程序能够按照设计意图运行,或者为了实现特定的程序功能。我们建议在进行这些更改之前,充分考虑在您的特定环境中实施这一过程可能带来的风险。如果您选择实施此过程,请采用任何适当的附加步骤以保护您的系统。我们建议只有确实需要这一过程时才使用它。
  1. 单击“开始”,依次指向“程序”、“Microsoft SQL Server 2005”和“配置工具”,然后单击“SQL Server 外围应用配置器”。
  2. 在“SQL Server 2005 外围应用配置器”页上,单击“服务和连接的外围应用配置器”。
  3. 在“服务和连接的外围应用配置器”页上,单击“SQL Server Browser”,在“启动类型”中单击“自动”选项,然后单击“应用”。

    注意:在单击“自动”选项后,每次启动 Microsoft Windows 时将自动启动 SQL Server Browser 服务。
  4. 单击“启动”,然后单击“确定”。
注意:在计算机上运行 SQL Server Browser 服务时,计算机显示其上运行的每个 SQL Server 实例的实例名称和连接信息。如果不启用 SQL Server Browser 服务并且通过分配的 TCP 端口直接连接到 SQL Server 实例,则可以降低此风险。本文不讨论如何通过 TCP 端口直接到 SQL Server 实例。有关 SQL Server Browser 服务和连接到 SQL Server 实例的更多信息,请参见《SQL Server 联机丛书》中的以下主题:
  • SQL Server Browser 服务
  • 连接到 SQL Server 数据库引擎
  • 客户端网络配置

在 Windows 防火墙中创建例外

这些步骤适用于 Windows XP Service Pack 2 (SP2) 和 Windows Server 2003 中包含的 Windows 防火墙版本。如果您使用的是不同的防火墙系统,请参阅相应的防火墙文档以了解更多信息。

如果在运行 SQL Server 2005 的计算机上运行防火墙,将会阻止访问 SQL Server 2005 的外部连接,除非 SQL Server 2005 和 SQL Server Browser 服务可以通过防火墙进行通信。必须为每个要接受远程连接的 SQL Server 2005 实例创建一个例外,并为 SQL Server Browser 服务创建一个例外。

在安装 SQL Server 2005 的程序文件时,SQL Server 2005 会使用一个实例 ID 作为路径的一部分。若要为每个 SQL Server 实例创建一个例外,必须确定正确的实例 ID。若要获取实例 ID,请执行以下步骤:
  1. 单击“开始”,依次指向“程序”、“Microsoft SQL Server 2005”和“配置工具”,然后单击“SQL Server 配置管理器”。
  2. 在“SQL Server 配置管理器”中,单击右窗格中的“SQL Server Browser 服务”,右键单击主窗口中的实例名称,然后单击“属性”。
  3. 在“SQL Server Browser 属性”页上,单击“高级”选项卡,定位到属性列表中的实例 ID,然后单击“确定”。
若要打开 Windows 防火墙,请单击“开始”,再单击“运行”,键入 firewall.cpl,然后单击“确定”。

在 Windows 防火墙中为 SQL Server 2005 创建例外

若要在 Windows 防火墙中为 SQL Server 2005 创建例外,请执行以下步骤:
  1. 在 Windows 防火墙中,单击“例外”选项卡,然后单击“添加程序”。
  2. 在“添加程序”窗口中,单击“浏览”。
  3. 单击 C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\sqlservr.exe 可执行程序,单击“打开”,然后单击“确定”。

    注意:上述路径可能会根据 SQL Server 2005 的安装位置而不同。MSSQL.1 这个占位符代表的是您在前面过程的步骤 3 中获得的实例 ID。
  4. 对于每个需要为其创建例外的 SQL Server 2005 实例,重复步骤 1 到步骤 3。

在 Windows 防火墙中为 SQL Server Browser 服务创建例外

若要在 Windows 防火墙中为 SQL Server Browser 服务创建例外,请执行以下步骤:
  1. 在 Windows 防火墙中,单击“例外”选项卡,然后单击“添加程序”。
  2. 在“添加程序”窗口中,单击“浏览”。
  3. 单击 C:\Program Files\Microsoft SQL Server\90\Shared\sqlbrowser.exe 可执行程序,单击“打开”,然后单击“确定”。

    注意:上述路径可能会根据 SQL Server 2005 的安装位置而不同。

这篇文章中的信息适用于:
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Express Edition
关键字: 
kbhowto kbinfo kbtshoot KB914277
3,800
在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接)
解决方法:

你可能连接的数据库是SQL Server 2005 Express Edition,从"开始菜单"调出"配置工具"中的"SQL Server 外围应用配置器".然后单击"服务和连接外围应用配置器",选择数据库实例(默认是"SQLEXPRESS",选择database Engine的"远程连接"中的"本地连接和远程连接(用TCP/IP)",这样即可打开SQL Server 2005的远程连接(默认不允许).
其实你可以
配置文件:
程序调用时:
SqlConnection sqlCon = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["testDBConnectionString"].ToString());//testDBConnectionString
或都直接生成connection:
SqlConnection sqlCon = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=D:\\wwwroot\\sszTest1\\App_Data\\testDB.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True")
只要连接成功,你再生成DataSource应该不成问题.

在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: SQL 网络接口, error: 26 - 定位指定的服务器实例时出错)
首先请确认SQL SERVER EXPRSS已安装到本地计算机上,并且SQL SERVER (SQLEXPRESS)服务已经成功启动。如果问题仍然存在,可以尝试应打开“SQL Server 外围应用配置器”,选择“服务和连接的外围应用配置器”,然后将“远程连接”配置为“同时使用 TCP/IP 和 named pipes”

由于启动用户实例的进程时出错,导致无法生成 SQL Server 的用户实例。该连接将关闭。
将连接字符串中的“User Instance=True”修改为“User Instance=False”即可。
相关参考文章请参阅
《非管理员用户实例》

无法将文件 'X:\Website\App_Data\Database.mdf' 作为数据库 ''. 附加。当前命令发生了严重错误。应放弃任何可能产生的结果。
需要为X分区以及X分区的子文件夹和文件分配Users组的“读取”权限。


尝试为文件 X:\Website\App_Data\Database.mdf 附加自动命名的数据库,但失败。已存在同名的数据库,或指定的文件无法打开或位于 UNC 共享目录中。
首选要确认已经为X分区以及X分区的子文件夹和文件分配了Users组的“读取”权限。如果问题仍然存在,请使用SQL Server Management Studio连接到SQLEXPRESS数据库实例,检查是否有名称是“Database”的数据库存在。如果有,分离同名数据库即可。
我就遇到过这个问题,其实为分区根目录加上IIS_WPG用户组的“列出文件夹/读取数据”的权限就可以

无法打开用户默认数据库。登录失败。用户 'NT AUTHORITY\NETWORK SERVICE' 登录失败。
数据库文件Database.mdf 的读写权限被设置成只有NETWORK SERVICE才具有。解决方法是先停止掉SQL SERVER (SQLEXPRESS)服务,然后从父项集成权限,再次启动SQL SERVER (SQLEXPRESS)服务即可。


4,897

有时候已知一个 ID 的数组,需要读取这些记录内容,SQL 可以联接多个“或”关系去读取,或使用“In”语句,在 LINQ TO SQL 中可以这样来做:

List<int> ids = new List<int> { 1, 2, 3 };
List<string> tbs = db.dbTables.Where(c => ids.Contains<int>(c.ID)).ToList();
xoyozo 16 年前
4,571

我们继续讲解LINQ to SQL语句,这篇我们来讨论Group By/Having操作符和Exists/In/Any/All/Contains操作符。

Group By/Having操作符

适用场景:分组数据,为我们查找数据缩小范围。

说明:分配并返回对传入参数进行分组操作后的可枚举对象。分组;延迟

1.简单形式:

var q =
    from p in db.Products
    group p by p.CategoryID into g
    select g;

语句描述:使用Group By按CategoryID划分产品。

说明:from p in db.Products 表示从表中将产品对象取出来。group p by p.CategoryID into g表示对p按CategoryID字段归类。其结果命名为g,一旦重新命名,p的作用域就结束了,所以,最后select时,只能select g。当然,也不必重新命名可以这样写:

var q =
    from p in db.Products
    group p by p.CategoryID;

我们用示意图表示:

GroupBy分组统计示意图

如果想遍历某类别中所有记录,这样:

foreach (var gp in q)
{
    if (gp.Key == 2)
    {
        foreach (var item in gp)
        {
            //do something
        }
    }
}

2.Select匿名类:

var q =
    from p in db.Products
    group p by p.CategoryID into g
    select new { CategoryID = g.Key, g }; 

说明:在这句LINQ语句中,有2个property:CategoryID和g。这个匿名类,其实质是对返回结果集重新进行了包装。把g的property封装成一个完整的分组。如下图所示:

GroupBy分组匿名类示意图

如果想遍历某匿名类中所有记录,要这么做:

foreach (var gp in q)
{
    if (gp.CategoryID == 2)
    {
        foreach (var item in gp.g)
        {
            //do something
        }
    }
}

3.最大值

var q =
    from p in db.Products
    group p by p.CategoryID into g
    select new {
        g.Key,
        MaxPrice = g.Max(p => p.UnitPrice)
    };

语句描述:使用Group By和Max查找每个CategoryID的最高单价。

说明:先按CategoryID归类,判断各个分类产品中单价最大的Products。取出CategoryID值,并把UnitPrice值赋给MaxPrice。

4.最小值

var q =
    from p in db.Products
    group p by p.CategoryID into g
    select new {
        g.Key,
        MinPrice = g.Min(p => p.UnitPrice)
    };

语句描述:使用Group By和Min查找每个CategoryID的最低单价。

说明:先按CategoryID归类,判断各个分类产品中单价最小的Products。取出CategoryID值,并把UnitPrice值赋给MinPrice。

5.平均值

var q =
    from p in db.Products
    group p by p.CategoryID into g
    select new {
        g.Key,
        AveragePrice = g.Average(p => p.UnitPrice)
    };

语句描述:使用Group By和Average得到每个CategoryID的平均单价。

说明:先按CategoryID归类,取出CategoryID值和各个分类产品中单价的平均值。

6.求和

var q =
    from p in db.Products
    group p by p.CategoryID into g
    select new {
        g.Key,
        TotalPrice = g.Sum(p => p.UnitPrice)
    };

语句描述:使用Group By和Sum得到每个CategoryID 的单价总计。

说明:先按CategoryID归类,取出CategoryID值和各个分类产品中单价的总和。

7.计数

var q =
    from p in db.Products
    group p by p.CategoryID into g
    select new {
        g.Key,
        NumProducts = g.Count()
    };

语句描述:使用Group By和Count得到每个CategoryID中产品的数量。

说明:先按CategoryID归类,取出CategoryID值和各个分类产品的数量。

8.带条件计数

var q =
    from p in db.Products
    group p by p.CategoryID into g
    select new {
        g.Key,
        NumProducts = g.Count(p => p.Discontinued)
    };

语句描述:使用Group By和Count得到每个CategoryID中断货产品的数量。

说明:先按CategoryID归类,取出CategoryID值和各个分类产品的断货数量。 Count函数里,使用了Lambda表达式,Lambda表达式中的p,代表这个组里的一个元素或对象,即某一个产品。

9.Where限制

var q =
    from p in db.Products
    group p by p.CategoryID into g
    where g.Count() >= 10
    select new {
        g.Key,
        ProductCount = g.Count()
    };

语句描述:根据产品的―ID分组,查询产品数量大于10的ID和产品数量。这个示例在Group By子句后使用Where子句查找所有至少有10种产品的类别。

说明:在翻译成SQL语句时,在最外层嵌套了Where条件。

10.多列(Multiple Columns)

var categories =
    from p in db.Products
    group p by new
    {
        p.CategoryID,
        p.SupplierID
    }
        into g
        select new
            {
                g.Key,
                g
            };

语句描述:使用Group By按CategoryID和SupplierID将产品分组。

说明: 既按产品的分类,又按供应商分类。在by后面,new出来一个匿名类。这里,Key其实质是一个类的对象,Key包含两个Property:CategoryID、SupplierID。用g.Key.CategoryID可以遍历CategoryID的值。

11.表达式(Expression)

var categories =
    from p in db.Products
    group p by new { Criterion = p.UnitPrice > 10 } into g
    select g;

语句描述:使用Group By返回两个产品序列。第一个序列包含单价大于10的产品。第二个序列包含单价小于或等于10的产品。

说明:按产品单价是否大于10分类。其结果分为两类,大于的是一类,小于及等于为另一类。

Exists/In/Any/All/Contains操作符

适用场景:用于判断集合中元素,进一步缩小范围。

Any

说明:用于判断集合中是否有元素满足某一条件;不延迟。(若条件为空,则集合只要不为空就返回True,否则为False)。有2种形式,分别为简单形式和带条件形式。

1.简单形式:

仅返回没有订单的客户:

var q =
    from c in db.Customers
    where !c.Orders.Any()
    select c;

生成SQL语句为:

SELECT [t0].[CustomerID], [t0].[CompanyName], [t0].[ContactName],
[t0].[ContactTitle], [t0].[Address], [t0].[City], [t0].[Region],
[t0].[PostalCode], [t0].[Country], [t0].[Phone], [t0].[Fax]
FROM [dbo].[Customers] AS [t0]
WHERE NOT (EXISTS(
    SELECT NULL AS [EMPTY] FROM [dbo].[Orders] AS [t1]
    WHERE [t1].[CustomerID] = [t0].[CustomerID]
   ))

2.带条件形式:

仅返回至少有一种产品断货的类别:

var q =
    from c in db.Categories
    where c.Products.Any(p => p.Discontinued)
    select c;

生成SQL语句为:

SELECT [t0].[CategoryID], [t0].[CategoryName], [t0].[Description],
[t0].[Picture] FROM [dbo].[Categories] AS [t0]
WHERE EXISTS(
    SELECT NULL AS [EMPTY] FROM [dbo].[Products] AS [t1]
    WHERE ([t1].[Discontinued] = 1) AND 
    ([t1].[CategoryID] = [t0].[CategoryID])
    )

All

说明:用于判断集合中所有元素是否都满足某一条件;不延迟

1.带条件形式

var q =
    from c in db.Customers
    where c.Orders.All(o => o.ShipCity == c.City)
    select c;

语句描述:这个例子返回所有订单都运往其所在城市的客户或未下订单的客户。

Contains

说明:用于判断集合中是否包含有某一元素;不延迟。它是对两个序列进行连接操作的。

string[] customerID_Set =
    new string[] { "AROUT", "BOLID", "FISSA" };
var q = (
    from o in db.Orders
    where customerID_Set.Contains(o.CustomerID)
    select o).ToList();

语句描述:查找"AROUT", "BOLID" 和 "FISSA" 这三个客户的订单。 先定义了一个数组,在LINQ to SQL中使用Contains,数组中包含了所有的CustomerID,即返回结果中,所有的CustomerID都在这个集合内。也就是in。 你也可以把数组的定义放在LINQ to SQL语句里。比如:

var q = (
    from o in db.Orders
    where (
    new string[] { "AROUT", "BOLID", "FISSA" })
    .Contains(o.CustomerID)
    select o).ToList();

Not Contains则取反:

var q = (
    from o in db.Orders
    where !(
    new string[] { "AROUT", "BOLID", "FISSA" })
    .Contains(o.CustomerID)
    select o).ToList();

1.包含一个对象:

var order = (from o in db.Orders
             where o.OrderID == 10248
             select o).First();
var q = db.Customers.Where(p => p.Orders.Contains(order)).ToList();
foreach (var cust in q)
{
    foreach (var ord in cust.Orders)
    {
        //do something
    }
}

语句描述:这个例子使用Contain查找哪个客户包含OrderID为10248的订单。

2.包含多个值:

string[] cities = 
    new string[] { "Seattle", "London", "Vancouver", "Paris" };
var q = db.Customers.Where(p=>cities.Contains(p.City)).ToList();

语句描述:这个例子使用Contains查找其所在城市为西雅图、伦敦、巴黎或温哥华的客户。

总结一下这篇我们说明了以下语句:

Group By/Having 分组数据;延迟
Any 用于判断集合中是否有元素满足某一条件;不延迟
All 用于判断集合中所有元素是否都满足某一条件;不延迟
Contains 用于判断集合中是否包含有某一元素;不延迟

本系列链接:LINQ体验系列文章导航

LINQ推荐资源

LINQ专题:http://kb.cnblogs.com/zt/linq/ 关于LINQ方方面面的入门、进阶、深入的文章。
LINQ小组:http://space.cnblogs.com/group/linq/ 学习中遇到什么问题或者疑问提问的好地方。

转自 李永京 16 年前
4,594
Probably the biggest programming model improvement being made in .NET 3.5 is the work being done to make querying data a first class programming concept.  We call this overall querying programming model "LINQ", which stands for .NET Language Integrated Query.  Developers can use LINQ with any data source, and built-in libraries are included with .NET 3.5 that enable LINQ support against Objects, XML, and Databases.

Earlier this summer I started writing a multi-part blog series that discusses the built-in LINQ to SQL provider in .NET 3.5.  LINQ to SQL is an ORM (object relational mapping) implementation that allows you to model a relational database using .NET classes.  You can then query the database using LINQ, as well as update/insert/delete data from it.  LINQ to SQL fully supports transactions, views, and stored procedures.  It also provides an easy way to integrate data validation and business logic rules into your data model.

You can learn more about LINQ to SQL by reading my posts below (more will be coming soon):

Using the LINQ to SQL Debug Visualizer

One of the nice development features that LINQ to SQL supports is the ability to use a "debug visualizer" to hover over a LINQ expression while in the VS 2008 debugger and inspect the raw SQL that the ORM will ultimately execute at runtime when evaluating the LINQ query expression.

For example, assume we write the below LINQ query expression code against a set of data model classes:

We could then use the VS 2008 debugger to hover over the "products" variable after the query expression has been assigned:

And if we click the small magnifying glass in the expression above, we can launch the LINQ to SQL debug visualizer to inspect the raw SQL that the ORM will execute based on that LINQ query:

If you click the "Execute" button, you can even test out the SQL query and see the raw returned results that will be returned from the database:

This obviously makes it super easy to see precisely what SQL query logic LINQ to SQL ORM is doing for you. 

You can learn even more about how all this works by reading the Part 3: Querying our Database segment in my LINQ to SQL series above.

How to Install the LINQ to SQL Debug Visualizer

The LINQ to SQL Debug Visualizer isn't built-in to VS 2008 - instead it is an add-in that you need to download to use.  You can download a copy of it here.

The download contains both a binary .dll assembly version of the visualizer (within the \bin\debug directory below), as well as all of the source code for the visualizer:

To install the LINQ to SQL debug visualizer, follow the below steps:

1) Shutdown all running versions of Visual Studio 2008

2) Copy the SqlServerQueryVisualizer.dll assembly from the \bin\debug\ directory in the .zip download above into your local \Program Files\Microsoft Visual Studio 9.0\Common7\Packages\Debugger\Visualizers\ directory:

3) Start up Visual Studio 2008 again.  Now when you use the debugger with LINQ to SQL you should be able to hover over LINQ query expressions and inspect their raw SQL (no extra registration is required).

Hope this helps,

Scott

6,218

安装过程中,SQL Server 数据库引擎设置为 Windows 身份验证模式SQL Server 和 Windows 身份验证模式。本主题介绍如何在安装后更改安全模式。

如果在安装过程中选择“Windows 身份验证模式”,则 sa 登录名将被禁用。如果稍后将身份验证模式更改为“SQL Server 和 Windows 身份验证模式”,则 sa 登录名仍处于禁用状态。若要启用 sa 登录帐户,请使用 ALTER LOGIN 语句。

ms188670.security(zh-cn,SQL.100).gif安全说明:
sa 帐户是一个广为人知的 SQL Server 帐户,并且经常成为恶意用户的攻击目标。除非您的应用程序需要使用 sa 帐户,否则请不要启用它。为 sa 登录名使用一个强密码非常重要。

sa 登录名只能使用 SQL Server 身份验证连接到服务器。

  1. 在 SQL Server Management Studio 的对象资源管理器中,右键单击服务器,再单击“属性”

  2. “安全性”页上的“服务器身份验证”下,选择新的服务器身份验证模式,再单击“确定”

  3. 在 SQL Server Management Studio 对话框中,单击“确定”以确认需要重新启动 SQL Server。

  1. 在对象资源管理器中,右键单击您的服务器,再单击“重新启动”。如果运行有 SQL Server 代理,则也必须重新启动该代理。

  1. 执行下列语句以启用 sa 密码并分配一个密码。

    ALTER LOGIN sa ENABLE ;
    GO
    ALTER LOGIN sa WITH PASSWORD = '<enterStrongPasswordHere>' ;
    GO
    
  1. 在对象资源管理器中,依次展开“安全”、“登录名”,右键单击“sa”,再单击“属性”

  2. “常规”页上,您可能需要为 sa 登录名创建密码并确认该密码。

  3. “状态”页上的“登录”部分中,单击“启用”,然后单击“确定”

4,807

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["swosConnectionString"].ToString());
SqlCommand cmd = new SqlCommand("", con);
cmd.CommandText = "SELECT [ID], [tag] FROM [XsdnTag] where [abc]=@abc order by [order] desc";
//cmd.Parameters.AddWithValue("@ID", id);
//cmd.Parameters.Add("@abc", SqlDbType.NVarChar);
//cmd.Parameters["@abc"].Value = "sssss";
SqlParameter pText=new SqlParameter("@Text",mytext);
cmd.Parameters.Add(pText);
try
{
    con.Open();
    cmd.ExecuteNonQuery();
    //SqlDataReader dr = cmd.ExecuteReader();
    //while (dr.Read())
    //{
    //    ddddd = dr["ID"].ToString();
    //}
    //dr.Close();
}
catch (Exception ex)
{
    zErrorLog.catchError(Request.Url.ToString(), ex.Message);
}
finally
{
    con.Close();
}

5,538