Я хочу сгенерировать некоторый код, используя шаблон T4. Я подключаюсь, используя "sa" и пароль sa. Но я не могу подключиться к удаленному серверу SQL. Я использую SQL Server 2008.
Ошибка ниже:
Ошибка при выполнении преобразования: Microsoft.SqlServer.Management.Smo.FailedOperationException: SetParent
не удалось для базы данных «FlyAnt». --->
Microsoft.SqlServer.Management.Common.ConnectionFailureException:
Не удалось подключиться к серверу MROAPPSQL. --->
System.Data.SqlClient.SqlException: сбой входа для пользователя
'MROTECHNIC \ yusuf.karatoprak'.
в System.Data.SqlClient.SqlInternalConnection.OnError (SqlException
исключение, Boolean breakConnection)
в System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning ()
в System.Data.SqlClient.TdsParser.Run (RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject
stateObj)
at System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin (Boolean
enlistOK)
в System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin (ServerInfo
serverInfo, String newPassword, Boolean ignoreSniOpenTimeout,
TimeoutTimer timeout, SqlConnection owningObject)
в System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover (ServerInfo
serverInfo, String newPassword, Boolean redirectedUserInstance,
SqlConnection owningObject, SqlConnectionString connectionOptions,
TimeoutTimer timeout)
в System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist (SqlConnection
owningObject, TimeoutTimer timeout, SqlConnectionString
connectionOptions, String newPassword, Boolean redirectedUserInstance)
в System.Data.SqlClient.SqlInternalConnectionTds..ctor (DbConnectionPoolIdentity
идентичность, SqlConnectionString connectionOptions, объект providerInfo,
String newPassword, SqlConnection owningObject, Boolean
redirectedUserInstance)
в System.Data.SqlClient.SqlConnectionFactory.CreateConnection (DbConnectionOptions
параметры, Object poolGroupProviderInfo, DbConnectionPool pool,
DbConnection владениеConnection)
в System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection (DbConnection
owningConnection, пул DbConnectionPool, параметры DbConnectionOptions)
в System.Data.ProviderBase.DbConnectionPool.CreateObject (DbConnection
owningObject)
в System.Data.ProviderBase.DbConnectionPool.UserCreateRequest (DbConnection
owningObject)
в System.Data.ProviderBase.DbConnectionPool.GetConnection (DbConnection
owningObject)
в System.Data.ProviderBase.DbConnectionFactory.GetConnection (DbConnection
owningConnection)
в System.Data.ProviderBase.DbConnectionClosed.OpenConnection (DbConnection
externalConnection, DbConnectionFactory connectionFactory)
в System.Data.SqlClient.SqlConnection.Open ()
в Microsoft.SqlServer.Management.Common.ConnectionManager.InternalConnect (WindowsIdentity
impersonatedIdentity)
в Microsoft.SqlServer.Management.Common.ConnectionManager.Connect ()
--- Конец внутренней трассировки стека исключений ---
в Microsoft.SqlServer.Management.Common.ConnectionManager.Connect ()
в Microsoft.SqlServer.Management.Common.ConnectionManager.PoolConnect ()
в Microsoft.SqlServer.Management.Common.ConnectionManager.get_ServerVersion ()
в Microsoft.SqlServer.Management.Smo.ExecutionManager.GetServerVersion ()
в Microsoft.SqlServer.Management.Smo.SqlSmoObject.get_ServerVersion ()
в Microsoft.SqlServer.Management.Smo.SqlSmoObject.ValidateParent (SqlSmoObject
newParent)
в Microsoft.SqlServer.Management.Smo.SqlSmoObject.SetParentImpl (SqlSmoObject
newParent)
--- Конец внутренней трассировки стека исключений ---
в Microsoft.SqlServer.Management.Smo.SqlSmoObject.SetParentImpl (SqlSmoObject
newParent)
в Microsoft.SqlServer.Management.Smo.Database..ctor (сервер, имя строки)
в Microsoft.VisualStudio.TextTemplating3B02A40A7B5CFF5BC85C47D46E8EE44A.GeneratedTextTransformation.CodeGenerator.RunCore ()
в T4Toolbox.Generator.Run ()
в Microsoft.VisualStudio.TextTemplating3B02A40A7B5CFF5BC85C47D46E8EE44A.GeneratedTextTransformation.TransformText ()
в Microsoft.VisualStudio.TextTemplating.TransformationRunner.RunTransformation (TemplateProcessingSession
сеанс, источник строки, хост ITextTemplatingEngineHost, строка &
результат)
Мой код такой:
<#@ template language="C#"#>
<#@ assembly name="Microsoft.SqlServer.ConnectionInfo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" #>
<#@ assembly name="Microsoft.SqlServer.Smo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" #>
<#@ assembly name="Microsoft.SqlServer.Management.Sdk.sfc, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" #>
<#@ import namespace="Microsoft.SqlServer.Management.Smo" #>
<#@ import namespace="Microsoft.SqlServer.Management.Common" #>
<#@ assembly name="System.Xml"#>
<#@ import namespace="System.Reflection"#>
<#+
public class CodeTemplate : Template
{
public string DatabaseName;
public string ServerName;
public string TableName;
public override string TransformText()
{
Server server = new Server(ServerName);
server.ConnectionContext.LoginSecure = false;
server.ConnectionContext.Login = "sa";
server.ConnectionContext.Password = "123456";
server.ConnectionContext.Connect();
Database database = new Database(server, DatabaseName);
Table table = new Table(database, TableName);
table.Refresh();
string DataType= string.Empty;
WriteLine("using System;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n");
WriteLine("namespace MyCustomEntities\n{");
WriteLine("//Select");
WriteLine("\tpublic partial class My" +table.Name+ "\n\t{");
GenerateProperties(table);
//output the contructor
WriteLine("\n\t\tpublic My" + table.Name + "()\n\t\t{\n\t\t//constructor\n\t\t}" );
//end class
WriteLine("\t}");
WriteLine("//Update Delete Save");
WriteLine("\tpublic partial class My" +table.Name+ "\n\t{");
WriteLine("\t}");
WriteLine("}");
return this.GenerationEnvironment.ToString();
}
protected void GenerateProperties( Table table)
{
foreach (Column column in table.Columns)
{
switch(column.DataType.Name)
{
case "nvarchar":
case "varchar":
case "nchar":
case "char":
WriteLine("\t\tpublic string "+column.Name+"{ get; set;}");
break;
case "int":
case "smallint":
case "bigint":
WriteLine("\t\tpublic int "+column.Name+" { get; set;}");
break;
case "datetime":
WriteLine("\t\tpublic DateTime "+column.Name+" { get; set;}");
break;
case "image":
WriteLine("\t\tpublic byte[] "+column.Name+" { get; set;}");
break;
case "bit":
WriteLine("\t\tpublic bool "+column.Name+" { get; set;}");
break;
}
}
}
}
#>
Код моего подключения:
<#@ template language="C#" hostspecific="True" #>
<#@ assembly name="Microsoft.SqlServer.ConnectionInfo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" #>
<#@ assembly name="Microsoft.SqlServer.Smo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" #>
<#@ assembly name="Microsoft.SqlServer.Management.Sdk.sfc, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" #>
<#@ import namespace="Microsoft.SqlServer.Management.Smo" #>
<#@ import namespace="Microsoft.SqlServer.Management.Common" #>
<#@ assembly name="System.Xml"#>
<#@ output extension="txt" #>
<#@ import namespace="System.Reflection"#>
<#@ include file="T4Toolbox.tt" #>
<#@ include file="CodeGenerator.tt" #>
<#
CodeGenerator gen = new CodeGenerator();
gen.ServerName="MYSQLSERVER";
gen.DatabaseName="FlyAnt";
gen.Run();
#>