sql server - How to implement ASP.NET identity: CREATE DATABASE permission denied in database 'master' -
first of all, checked here: asp.net identity how set target db?
i'm getting error
create database permission denied in database 'master'.
on line of code:
dim user user = manager.find(trim(username.text), trim(password.text))
full error:
[sqlexception (0x80131904): create database permission denied in database 'master'.]
system.data.sqlclient.sqlconnection.onerror(sqlexception exception, boolean breakconnection, action1 wrapcloseinaction) +3249852
1 completion, string methodname, boolean sendtopipe, int32 timeout, boolean asyncwrite) +367
system.data.sqlclient.tdsparser.throwexceptionandwarning(tdsparserstateobject stateobj, boolean callerhasconnectionlock, boolean asyncclose) +345
system.data.sqlclient.tdsparser.tryrun(runbehavior runbehavior, sqlcommand cmdhandler, sqldatareader datastream, bulkcopysimpleresultset bulkcopyhandler, tdsparserstateobject stateobj, boolean& dataready) +4927
system.data.sqlclient.sqlcommand.runexecutenonquerytds(string methodname, boolean async, int32 timeout, boolean asyncwrite) +1287
system.data.sqlclient.sqlcommand.internalexecutenonquery(taskcompletionsource
system.data.sqlclient.sqlcommand.executenonquery() +386
system.data.entity.infrastructure.interception.internaldispatcher1.dispatch(ttarget target, func
3 operation, tinterceptioncontext interceptioncontext, action3 executing, action
3 executed) +965
system.data.entity.infrastructure.interception.dbcommanddispatcher.nonquery(dbcommand command, dbcommandinterceptioncontext interceptioncontext) +505
system.data.entity.sqlserver.<>c__displayclass1a.b__19(dbconnection conn) +136
system.data.entity.sqlserver.sqlproviderservices.usingconnection(dbconnection sqlconnection, action1 act) +347
1 act) +916
system.data.entity.sqlserver.sqlproviderservices.usingmasterconnection(dbconnection sqlconnection, action
system.data.entity.sqlserver.sqlproviderservices.createdatabasefromscript(nullable1 commandtimeout, dbconnection sqlconnection, string createdatabasescript) +117
1 commandtimeout, storeitemcollection storeitemcollection) +212
system.data.entity.sqlserver.sqlproviderservices.dbcreatedatabase(dbconnection connection, nullable
system.data.entity.migrations.utilities.databasecreator.create(dbconnection connection) +172
system.data.entity.migrations.dbmigrator.ensuredatabaseexists(action mustsucceedtokeepdatabase) +175
system.data.entity.migrations.dbmigrator.update(string targetmigration) +116
system.data.entity.internal.databasecreator.createdatabase(internalcontext internalcontext, func3 createmigrator, objectcontext objectcontext) +121
1.initializedatabase(tcontext context) +257
system.data.entity.database.create(databaseexistencestate existencestate) +169
system.data.entity.createdatabaseifnotexists
system.data.entity.internal.internalcontext.performinitializationaction(action action) +72
system.data.entity.internal.internalcontext.performdatabaseinitialization() +483
system.data.entity.internal.retryaction1.performaction(tinput input) +177
1 action) +274
system.data.entity.internal.lazyinternalcontext.initializedatabaseaction(action
system.data.entity.internal.internalcontext.getentitysetandbasetypefortype(type entitytype) +37
system.data.entity.internal.linq.internalset1.initialize() +76
1.get_internalcontext() +21
system.data.entity.internal.linq.internalset
system.data.entity.infrastructure.dbquery1.system.linq.iqueryable.get_provider() +59
1 source, expression
system.data.entity.queryableextensions.firstordefaultasync(iqueryable1 predicate, cancellationtoken cancellationtoken) +208
1 source, expression`1 predicate) +172
system.data.entity.queryableextensions.firstordefaultasync(iqueryablemicrosoft.aspnet.identity.entityframework.d__6c.movenext() +502
system.runtime.compilerservices.taskawaiter.throwfornonsuccess(task task) +13855856
system.runtime.compilerservices.taskawaiter.handlenonsuccessanddebuggernotification(task task) +61
microsoft.aspnet.identity.cultureawaiter1.getresult() +48
1 func) +348
microsoft.aspnet.identity.<findasync>d__12.movenext() +357
system.runtime.compilerservices.taskawaiter.throwfornonsuccess(task task) +13855856
system.runtime.compilerservices.taskawaiter.handlenonsuccessanddebuggernotification(task task) +61
microsoft.aspnet.identity.asynchelper.runsync(func
myapp.login_identity.userlogin_click(object sender, eventargs e) in c:\myapp\login_identity.aspx.vb:168
system.web.ui.webcontrols.button.onclick(eventargs e) +11747645
system.web.ui.webcontrols.button.raisepostbackevent(string eventargument) +150
system.web.ui.page.processrequestmain(boolean includestagesbeforeasyncpoint, boolean includestagesafterasyncpoint) +3360
i changed dbcontext
initialization in appmodel.vb
existing connection string conn1
, points sql server database converted new identity tables.
my connection string:
<add name="conn1" connectionstring="data source=(local)\sqlexpress;initial catalog=myapp;user id=sa;password=xxxx;" providername="system.data.sqlclient" />
appmodel.vb
:
imports microsoft.aspnet.identity imports microsoft.aspnet.identity.entityframework imports system.collections.generic imports system.componentmodel.dataannotations imports system.data.entity imports system.linq imports system.web namespace aspnetidentitysample.models public class applicationuser inherits identityuser ' hometown stored in same table users public property hometown() string return m_hometown end set(value string) m_hometown = value end set end property private m_hometown string public overridable property todoes() icollection(of todo) return m_todoes end set(value icollection(of todo)) m_todoes = value end set end property private m_todoes icollection(of todo) ' firstname & lastname stored in different table called myuserinfo public overridable property myuserinfo() myuserinfo return m_myuserinfo end set(value myuserinfo) m_myuserinfo = value end set end property private m_myuserinfo myuserinfo end class public class myuserinfo public property id() integer return m_id end set(value integer) m_id = value end set end property private m_id integer public property firstname() string return m_firstname end set(value string) m_firstname = value end set end property private m_firstname string public property lastname() string return m_lastname end set(value string) m_lastname = value end set end property private m_lastname string end class public class todo public property id() integer return m_id end set(value integer) m_id = value end set end property private m_id integer public property description() string return m_description end set(value string) m_description = value end set end property private m_description string public property isdone() boolean return m_isdone end set(value boolean) m_isdone = value end set end property private m_isdone boolean public overridable property user() applicationuser return m_user end set(value applicationuser) m_user = value end set end property private m_user applicationuser end class public class mydbcontext inherits identitydbcontext(of applicationuser) public sub new() mybase.new("conn1") 'defaultconnection end sub protected overrides sub onmodelcreating(modelbuilder dbmodelbuilder) mybase.onmodelcreating(modelbuilder) ' change name of table users instead of aspnetusers modelbuilder.entity(of identityuser)().totable("users") modelbuilder.entity(of applicationuser)().totable("users") end sub public property todoes() dbset(of todo) return m_todoes end set(value dbset(of todo)) m_todoes = value end set end property private m_todoes dbset(of todo) public property myuserinfo() dbset(of myuserinfo) return m_myuserinfo end set(value dbset(of myuserinfo)) m_myuserinfo = value end set end property private m_myuserinfo dbset(of myuserinfo) end class end namespace
update
based on comment checked here.
i don't why role issue, since i'm reusing connection string working fine updating other (non-identity related) tables. don't why error refers master
table i'd expect i'm not trying connect in way manager.find
method.
anyway, user through i'm testing assigned sysadmin
role:
update 2
ok, jeremy's comment below i'm step closer...i needed add user iis apppool\.net v4.5
role sysadmin
, because user connecting shown in sql server profiler (although i'm unsure security risks when adding user role). anyway, find method no longer throws error , using sql server profiler see sql statement fired when execute code dim user user = manager.findbyname(trim(username.text))
exec sp_executesql n'select top (1) [extent1].[id] [id], [extent1].[applicationid] [applicationid], [extent1].[mobilealias] [mobilealias], [extent1].[isanonymous] [isanonymous], [extent1].[lastactivitydate] [lastactivitydate], [extent1].[mobilepin] [mobilepin], [extent1].[loweredemail] [loweredemail], [extent1].[loweredusername] [loweredusername], [extent1].[passwordquestion] [passwordquestion], [extent1].[passwordanswer] [passwordanswer], [extent1].[isapproved] [isapproved], [extent1].[islockedout] [islockedout], [extent1].[createdate] [createdate], [extent1].[lastlogindate] [lastlogindate], [extent1].[lastpasswordchangeddate] [lastpasswordchangeddate], [extent1].[lastlockoutdate] [lastlockoutdate], [extent1].[failedpasswordattemptcount] [failedpasswordattemptcount], [extent1].[failedpasswordattemptwindowstart] [failedpasswordattemptwindowstart], [extent1].[failedpasswordanswerattemptcount] [failedpasswordanswerattemptcount], [extent1].[failedpasswordanswerattemptwindowstart] [failedpasswordanswerattemptwindowstart], [extent1].[comment] [comment], [extent1].[email] [email], [extent1].[emailconfirmed] [emailconfirmed], [extent1].[passwordhash] [passwordhash], [extent1].[securitystamp] [securitystamp], [extent1].[phonenumber] [phonenumber], [extent1].[phonenumberconfirmed] [phonenumberconfirmed], [extent1].[twofactorenabled] [twofactorenabled], [extent1].[lockoutenddateutc] [lockoutenddateutc], [extent1].[lockoutenabled] [lockoutenabled], [extent1].[accessfailedcount] [accessfailedcount], [extent1].[username] [username] [dbo].[aspnetusers] [extent1] ((upper([extent1].[username])) = (upper(@p__linq__0))) or ((upper([extent1].[username]) null) , (upper(@p__linq__0) null))',n'@p__linq__0 nvarchar(4000)',@p__linq__0=n'flo@outlook.com'
the strange thing is: when execute directly in sql server management studio record returned, in code variable user
nothing
....what can be?
you connection string contains "user id=sa;password=xxxx", connection attempting use sql server authentication. ssms login property's title bar appears identifying windows account, implies there belief windows authentication should used. , yet connection attempting use sql server authentication (not windows authentication). if not configured, sql server's authentication mode can changed support both sql authentication , windows authentication ("mixed mode" authentication) see https://msdn.microsoft.com/en-us/library/ms188670.aspx.
alternatively, connection string can changed use windows authentication/integrated security, per https://msdn.microsoft.com/en-us/library/jj653752(v=vs.110).aspx#integratedsecurity
Comments
Post a Comment