|
|
#12 |
|
Чайный пьяница
|
Цитата:
Сообщение от ZooY
CRM 4.0
В плагине нужно получить данные, но не с помощью CrmService, а с помощью обращения к базе SQL. Для подключения к базе нужно как минимум знать ее имя. По началу сделал так: Код: ...
string databaseName = сontext.OrganizationName + "_MSCRM";
string connectionString =
"Data Source=localhost;Initial Catalog=" + databaseName +
";Integrated Security=SSPI";
...Собственно вопрос: можно ли каким нибудь образом получить имя базы данных CRM? Будь вместо плагина обычная ASP.NET страничка, я бы не парился и вбил имя базы в web.config, а вот что делать с плагином - ума не приложу... Код: RegistryKey key = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\MSCRM");
//Retreive MSCRM DataBase connection string
string configDBConnectionString = key.GetValue("configdb").ToString();
//next part - i connect to config db and retreive data to config connection to client db
DataSet clientDBConnectionData = new DataSet();
using(SqlConnection connection = new SqlConnection(configDBConnectionString))
{
connection.Open();
using (SqlCommand cmd = new SqlCommand())
{
cmd.Connection = connection;
cmd.CommandType = CommandType.Text;
cmd.CommandText = string.Format("Select SqlServerName, DatabaseName From Organization Where UniqueName = '{0}'", crmOrganizationName);
using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
adapter.Fill(clientDBConnectionData);
}
connection.Close();
}
if (clientDBConnectionData.Tables.Count == 0 || clientDBConnectionData.Tables[0].Rows.Count == 0)
throw new Exception("Check your config parameters!");
string connectionString = string.Format("Data Source={0};Initial Catalog={1};Integrated Security=SSPI",
new object[] { (string)clientDBConnectionData.Tables[0].Rows[0]["SqlServerName"],
(string)clientDBConnectionData.Tables[0].Rows[0]["DatabaseName"]});PS харкодинг localhost-a - не хороший стиль, потому что Application Server и DB Server - могут быть разнесены. Последний раз редактировалось a33ik; 04.11.2008 в 10:10. |
|
|
|
|
|