Dotnetnuke 有没有办法将一长串新用户导入DNN
我有一个新的DNN站点和一长串必须添加的用户。如何使用脚本创建这些新用户Dotnetnuke 有没有办法将一长串新用户导入DNN,dotnetnuke,Dotnetnuke,我有一个新的DNN站点和一长串必须添加的用户。如何使用脚本创建这些新用户 我看到过出售的模块,但如果可能的话,我希望避免购买模块。我正在使用DNN 4.4和4.9,遇到了同样的问题。我的解决方案是为此开发一个DNN模块,可以从CSV或制表符分隔的文本文件导入。我的建议是购买或开发一个模块 如果你有兴趣写你自己的,我可以提供你的代码片段做什么。请告诉我……Snowcover有一些内置模块-()- 我还从一个或另一个电子表格或其他数据库编写了脚本来实现这一点 执行此操作的sql脚本实际上只需要添加正
我看到过出售的模块,但如果可能的话,我希望避免购买模块。我正在使用DNN 4.4和4.9,遇到了同样的问题。我的解决方案是为此开发一个DNN模块,可以从CSV或制表符分隔的文本文件导入。我的建议是购买或开发一个模块
如果你有兴趣写你自己的,我可以提供你的代码片段做什么。请告诉我……Snowcover有一些内置模块-()- 我还从一个或另一个电子表格或其他数据库编写了脚本来实现这一点 执行此操作的sql脚本实际上只需要添加正确的信息 下面是我用来从一些access数据库导入的大多数脚本-可能不是很好或很优雅,但它可以工作
SET NOCOUNT ON;
declare @SQLText nvarchar(max)
DECLARE @ErrMsg nvarchar(4000), @ErrSeverity int
BEGIN TRY
BEGIN TRANSACTION
-- Insert statements for procedure here
DECLARE @ApplicationName nvarchar(256)
SET @ApplicationName = 'DotNetNuke'
DECLARE @LastName nvarchar(max)
DECLARE @FirstName nvarchar(max)
DECLARE @EmployeeID nvarchar(max)
DECLARE @ContactEmail nvarchar(max)
DECLARE UserLoop CURSOR Fast_Forward
FOR SELECT [Employee] as EmployeeID, isnull([LastName],'') as employee_Lastname, isnull([FirstName],'') as emplyee_firstname, 'na@na.com' as contactemail
from openrowset('Microsoft.ACE.OLEDB.12.0', 'Excel 8.0;Database=C:\_projects\hc.xls;HDR=YES', 'SELECT * FROM [Sheet1$]')
--WHERE CustomerID in (SELECT OldID FROM dbo.RCIWebApps_LocationInfo WHERE OwnerID = @NewCustomerNumber)
Open UserLoop
FETCH NEXT FROM UserLoop INTO @EmployeeID, @LastName, @FirstName, @ContactEmail
WHILE @@FETCH_STATUS = 0
BEGIN
----
---Make unique usernames - adding one to the list until it doesnt match
DECLARE @NewUsername nvarchar(max)
SET @NewUserName = REPLACE(@Firstname + '_' + @LastName, ',','_')
DECLARE @UserNameTest int
SET @UsernameTest = 1
DECLARE @UserNameNumber int
SET @UserNameNumber = 1
DECLARE @UserNameTemp nvarchar(max)
SET @UserNameTemp = @NewUserName
WHILE @UserNameTest > 0
BEGIN
SELECT @UsernameTest = count(*) FROM rcidnn..Users WHERE Username = @UserNameTemp
IF @USernametest > 0
BEGIN
SET @UsernameTemp = @NewUserName + convert(nvarchar(max),@UserNameNumber)
SET @UserNameNumber = @UserNameNumber + 1
END
END
SET @NewUserName = @UserNameTemp
----
DECLARE @Password nvarchar(128)
--From the existing user
SET @Password = 'iIFBTBSKXithnIDFau1miTih903eL/z5qgbcyMOflIM='
DECLARE @PasswordSalt nvarchar(128)
--From the existing user
SET @PasswordSalt = '4DmxPzt6MYScaGuwNHeUDw=='
DECLARE @PasswordQuestion nvarchar(256)
SET @PasswordQuestion = ''
DECLARE @PasswordAnswer nvarchar(128)
SET @PasswordAnswer = ''
DECLARE @IsApproved bit
SET @IsApproved = 1
DECLARE @CurrentTimeUtc datetime
SET @CurrentTimeUtc = GETDATE()
DECLARE @CreateDate datetime
SET @CreateDate = @CurrentTimeUtc
DECLARE @UniqueEmail int
SET @UniqueEmail = 0
DECLARE @PasswordFormat int
SET @PasswordFormat = 2 --NOTE: Value from existing user!
DECLARE @PortalId int
SET @PortalId = 6 --The id of your portal
Declare @UserId uniqueidentifier
DECLARE @DNNUserId int
--Make the stored procedure call
EXEC rcidnn.dbo.aspnet_Membership_CreateUser @ApplicationName, @NewUsername, @Password,
@PasswordSalt, @contactemail, @passwordquestion, @PasswordAnswer,
@IsApproved, @CurrentTimeUtc, @CreateDate, @UniqueEmail,
@PasswordFormat, @UserId
--Insert the record into the DotNetNuke users table
print @NewUsername
INSERT INTO rcidnn..users (Username, FirstName, LastName, IsSuperUser, Email,
DisplayName, UpdatePassword)
VALUES(@NewUsername, @FirstName, @LastName, 0, @ContactEmail, @Firstname + ' ' + @LastName, 0)
--Get the new userid, from the DNN users table
SELECT @dnnuserid = userid
FROM rcidnn..Users
WHERE username = @NewUsername
--Now, insert the record into the user portals table
INSERT INTO rcidnn..UserPortals (userId, PortalId, CreatedDate)
VALUES(@dnnuserid, @PortalId, GETDATE())
--Now Give the user permissions to the RECISTERED Users group
INSERT INTO rcidnn..UserRoles (userId, roleId)
SELECT @dnnuserid,
roleId
FROM rcidnn..Roles
WHERE (RoleName = 'Registered Users' or RoleName = 'Subscribers' or RoleName = 'G - Location View')
and portalid = @PortalId
--ADD info into profile??
INSERT rcidnn.dbo.UserProfile
VALUES ( @DNNUserID, 167, @NewCustomerNumber, null, 2, getdate())
----
FETCH NEXT FROM UserLoop INTO @EmployeeID, @LastName, @FirstName, @ContactEmail
END
CLOSE Userloop
DEALLOCATE userloop
COMMIT
Print 'Transfered'
END TRY
BEGIN CATCH
-- Whoops, there was an error
IF @@TRANCOUNT > 0
ROLLBACK
-- Raise an error with the details of the exception
SELECT @ErrMsg = ERROR_MESSAGE(),
@ErrSeverity = ERROR_SEVERITY()
RAISERROR(@ErrMsg, @ErrSeverity, 1)
END CATCH
我很幸运使用此模块导入用户。它使用易于修改的XML文件导入和导出用户。如果您使用excel将用户列表插入到xml文件中,然后将其导入,那么您就可以开始了。最好的部分是该模块是免费的。对于仍在搜索开放源代码模块以导入用户的任何人,有一个可以与最新的DNN版本配合使用。它以Excel电子表格作为输入。我使用过的最好的产品是“批量用户管理器”。这不是免费的,但值得花30美元。这将节省工作时间,时间就是金钱! 以下是DNN商店上产品的链接:
您是指从另一个数据库、旧dnn或新用户的数据输入导入?这看起来很有希望。密码是怎么回事?密码就是这样的吗?我想在电子表格中指定密码。我从来没有对此做过任何事情-我们让人们在第一次登录时重置-这是在数据库中导入-我们永远无法找到如何在DBDNNVillage.com中正确生成密码似乎不再存在