使用SQL CLR,方法必须是公有静态的
建立sql server project这样会自动部署到sql server上去
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using Microsoft.SqlServer.Server;
using System.Data.SqlTypes;
using System.Security.Cryptography;
public class SimpleCLR_VS
{
[Microsoft.SqlServer.Server.SqlFunction]
public static string GetPath()
{
return "sdf";// System.Environment.CurrentDirectory;
}
[Microsoft.SqlServer.Server.SqlFunction]
public static SqlBinary HashString(string clearText)
{
UnicodeEncoding ue = new UnicodeEncoding();
byte[] mes = ue.GetBytes(clearText);
SHA1Managed sm = new SHA1Managed();
return sm.ComputeHash(mes);
}
[Microsoft.SqlServer.Server.SqlProcedure]
public static void GetClr()
{
using (SqlConnection conn = new SqlConnection("context connection = true"))
{
conn.Open();
SqlCommand command = new SqlCommand("select * from Table_1",conn);
SqlContext.Pipe.ExecuteAndSend(command);
}
}
[Microsoft.SqlServer.Server.SqlProcedure]
public static void GetRandomData(int count)
{
SqlDataRecord record = new SqlDataRecord(
new SqlMetaData("RowID", SqlDbType.Int), new SqlMetaData("Value", SqlDbType.Int));
SqlContext.Pipe.SendResultsStart(record);
Random rd =new Random();
for (int i = 0; i < count; i++)
{
record.SetInt32(0, i);
int r = rd.Next(100);
record.SetInt32(1, r);
SqlContext.Pipe.SendResultsRow(record);
}
SqlContext.Pipe.SendResultsEnd();
}
}