Archive

Archive for the ‘Sql Server’ Category

SQL Server Linked Server 链接服务器

January 26th, 2010 Tony hu No comments

创建和配置linked server一般需要两步:

第一步是创建linked server。

可以通过sp_addlinkserver系统存储过程来创建linked server,基本语法如下:

sp_addlinkedserver [ @server= ] ’server’ [ , [@srvproduct= ] ‘product_name’ ]

[ , [ @provider= ] ‘provider_name’ ]

[ , [ @datasrc= ] ‘data_source’ ]

[ , [ @location= ] ‘location’ ]

[ , [ @provstr= ] ‘provider_string’ ]

[ , [ @catalog= ] ‘catalog’ ]

示例脚本如下所示:

EXEC sp_addlinkedserver @server = ‘SQLSRV3′, @srvProduct = N’SQL Server’

第二步是创建linked server的登录帐号。

在linked server创建后,下一步是创建远程服务器的登录帐号。通过本地SQL Server的登录帐号来映射到linked server的登录帐号。

创建linked server的登录帐号也有两种方法,一种是通过系统存储过程 sp_addlinkedsrvlogin,sp_addlinkedsrvlogin的基本语法如下:

sp_addlinkedsrvlogin [ @rmtsrvname = ] ‘rmtsrvname’

[ , [ @useself = ] ‘TRUE’ | ‘FALSE’ | ‘NULL’]

[ , [ @locallogin = ] ‘locallogin’ ]

[ , [ @rmtuser = ] ‘rmtuser’ ]

[ , [ @rmtpassword = ] ‘rmtpassword’ ]

sp_addlinkedsrvlogin创建远程服务器登录帐号示例脚本如下:

EXEC sp_addlinkedsrvlogin @rmtsrvname=N’SQLSRV3′, @useself=N’False’, @locallogin=N’sa’, @rmtuser=N’remoteuser’,@rmtpassword=’passowrd’

我的代码:

EXEC sp_addlinkedserver @server = ‘SZAXDBSRV\SZAXDB’, @srvProduct = N’SQL Server’

EXEC sp_addlinkedsrvlogin @rmtsrvname=N’SZAXDBSRV\SZAXDB’, @useself=N’False’, @locallogin=N’sa’, @rmtuser=N’ffsa’, @rmtpassword=’ffsa’

查询方式:

SELECT * FROM [SZAXDBSRV\SZAXDB].WIPTracking.dbo.t_Rel_LotCar

注意:[SZAXDBSRV\SZAXDB] 这个是一个名为:SZAXDBSRV 的服务器的 SZAXDB SQL Server实例。

ASP.net 中,自定义、填充 DataTable,GridView 显示

December 30th, 2009 Tony hu 1 comment

void bind()
{
DateTime dt1 = Convert.ToDateTime(this.DropDownList1.SelectedValue + “-” + this.DropDownList2.SelectedValue + “-1″);
DateTime dt2 = Convert.ToDateTime(this.DropDownList3.SelectedValue + “-” + this.DropDownList4.SelectedValue + “-1″);
int i = 0;
int j = 0;
j = Convert.ToInt32(DB.GetFirstValue(“Select Datediff(m,’” + dt1 + “‘,’” + dt2 + “‘) AS J;”, DB.connectionString)) + 1;
DataTable dt;
‘定义每一列的属性
DataTable Dt = new DataTable(“GetSummary”);
Dt.Columns.Add(“Date”, Type.GetType(“System.String”));
Dt.Columns.Add(“SORTING100″, Type.GetType(“System.Int32″));
Dt.Columns.Add(“HCMNOBYPASS”, Type.GetType(“System.Int32″));
Dt.Columns.Add(“PCMNOBYPASS”, Type.GetType(“System.Int32″));
Dt.Columns.Add(“REWORK”, Type.GetType(“System.Int32″));
Dt.Columns.Add(“VCAPS”, Type.GetType(“System.Int32″));
Dt.Columns.Add(“SUM”, Type.GetType(“System.Int32″));
Dt.Columns.Add(“Total”, Type.GetType(“System.Int32″));
Dt.Columns.Add(“Percent”, Type.GetType(“System.String”));
Dt.Columns.Add(“HCMNOBYPASSCC”, Type.GetType(“System.Int32″));
Dt.Columns.Add(“PCMNOBYPASSCC”, Type.GetType(“System.Int32″));
‘填充
for (i = 0; i < j; i++)
{
string date = dt1.AddMonths(i).ToShortDateString();
string tsql = “SELECT Count(f_LC_LotUID) AS Total FROM [t_Rel_LotCar] where Datediff(m,f_LC_ProdCalDate,’” + date + “‘)=0 and f_LC_CarStatus=’ST01/OK’”;

dt = NoPrintClass.GetGetSummary(date);
‘将从数据库中得到的表的各个列的值,填充到我们定义的变量Dt中,注意这里的 Dt 和 dt 是不一样的。这里是C#程序
Dt.Rows.Add(new object[] { dt.Rows[0][0], dt.Rows[0][1], dt.Rows[0][2], dt.Rows[0][3], dt.Rows[0][4], dt.Rows[0][5], dt.Rows[0][8], Convert.ToInt32(DB.GetFirstValue(tsql, DB.connWIP)), ‘2′, dt.Rows[0][6], dt.Rows[0][7] });
GridView1.DataSource = Dt;
GridView1.DataBind();
}
}

时间较紧,没有写注释,业内人应该都可以看懂

用Excel VBA 读取 SQL Server 数据

December 30th, 2009 Tony hu No comments

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim cn As New ADODB.Connection ‘定义数据链接对象 ,保存连接数据库信息;请先添加ADO引用
Dim rs As New ADODB.Recordset ‘定义记录集对象,保存数据表
Dim strCn As String, strSQL As String ‘字符串变量
strCn = “Provider=sqloledb;Server=SCL;Database=grm;uid=grm;pwd=123456;” ‘定义数据库链接字符串
Set sht = ThisWorkbook.Worksheets(“R-FN203-R1″) ‘把sht指向当前工作簿的sheet1工作表

‘下面的语句将读取数据表数据,并将它保存到excel工作表中:画两张表想像一下,工作表为一张两维表,记录集也是一张两维表

strSQL = “SELECT distinct [ShelfAddress] FROM [GravureRoll] where [ArtworkNum]=’” + Trim(sht.Cells(16, 7)) + “‘ and [State]=1″

cn.Open strCn ‘与数据库建立连接,如果成功,返回连接对象cn
rs.Open strSQL, cn ‘执行strSQL所含的SQL命令,结果保存在rs记录集对象中
sht.Cells(16, 8) = rs(“ShelfAddress”) ‘将得到的值放到Excel的单元格中。
rs.Close
cn.Close

End Sub

注意点是要先添加ADO引用,否则会定义失败

Categories: Sql Server Tags: , ,

Sql Server中和Oracle的Decode效果一样的语句

November 30th, 2009 Tony hu No comments

在SQL Server中的语句:

case ShiftType When 1 Then ‘早’ When 2 Then ‘中’  when 3 then ‘晚’ end as ShiftType

在Oracle中的语句:

Decode(table_column,0,’否’,1,’是’)

Categories: Database, Oracle, Sql Server Tags: ,

数据库从Access升级到SQL Server和ASP程序注意事项

October 20th, 2009 Tony hu No comments

随着数据量的扩大,原先的Access已不堪重负,此时就应该考虑使用SQL Server、Oracle 等大型数据库。由于Access和SQL Server 都是微软自家产品,导入导出数据相对容易得多,所以从Access直接导入到SQL Server是一个比较好的方案。
具体的过程这里就不说了,大家都会的。我直接说一下将Access数据导入到SQL Server 中后,需要注意的几点:

  1. 自动增加字段需要重写。在access中经常使用的自动编号字段,导入到mssql后,他并不是自增型的int,需要手工设置,把导入后的自动编号字段的标识的“否”改为“是”,“种子”和“递增量”都为“1”,才能成为自动编号
  2. 所有的默认值都丢失了。主要是数字类型和日期类型。在ASP程序中now(),time(),date()要改成getdate()
  3. 有可能一些true/false的判断语句不能正常使用了,这里是指用整数型来表达bool的情况,要变为1/0
  4. 在access的sql语句中的时间使用变量查询的时候,大家一般使用”select * from aaaa while time=#”&变量名&”#”,在mssql中是不行的,他的语法是“select * from aaaa while time=’”&变量名&”‘””。
Categories: Sql Server Tags: