Monday 17 January 2011

Timesheet solution for SharePoint 2010 - Part 3 Installation

Overview:  Download the visual studio 2010 solution.  This contains the code to implement the timesheet application within SharePoint 2010.  The instructions give step by step actions to get the full timesheet application working.

Related posts in this series:
Part 1 - Design & data storage
Part 2 - Building the UI
Part 3 - Installation Steps  (This blog post)
Part 4 - Final Part


Simple Instructions for Timesheet deployment
==================================
You require a web application that contains a site definition, I used a new web application (http://intranet.dev/) with a Publishing Site as the site template for the root site collection.
1. Download PaulB-Timesheet.wsp (save it to the server/local machine, I put PaulB-Timesheet.wsp on the e drive for this post)
2. Open Powershell with SharePoint commands:
3. Install the wsp and activate the feature using Powershell (PS) as shown below (text version of the PS commands)

4. Check the feature has been installed correctly on your site
5. Create a new database and popluate it with tables, download the SQL script.

6. Ensure the Timesheet database is created and ensure an account has permissions to access the table for read/write opterations.

7. Edit the web.config files on each Web Front End SP2010 Server (this should be changed to a feature receiver).  The connection string below uses windows trusted and will pass through each users Windows identity, it will generally be easier to user a dedicated connection string account as it saves on SQL Server permions being required for each user.

To complete your setup you need to configure your timesheet application per part 4 - Seed data & page creation.
Summary:
This will be sufficient for most standard requirments however, it is preferable to implement logging to the ULS and your own logging mechanism if it exists.

The areas I would customise on a SharePoint custom deployment would be:
  1. Assemly and wsp solution naming;
  2. Add logging to error handling;
  3. Rename lables;
  4. Potentially add custom fields or logic to the application to meet specific business requirements.
Instructions for Timesheet deployment using Visual Studio 2010 (Advanced option)
===============================================
Download the Visual Studio 2010 project:
PaulBeck.Timesheet.zip (version 1 - 820 KB), unzip the files and place on you development machine.
1.> Build and deploy solution to SharePoint farm.  The Visual Studio 2010 project has the following structure.

2.> Run the Script\timesheet-script.sql file in a SQL instance (Creates the db).
3.> Change the web.config to contain the app setting connection info for timesheets.
Configure your Timesheet Application
4.> Add the "Timesheet - Consultant", "Week", "Timesheet - UserProjects" & "Timesheet - BookTime" web parts to a new page.
5.> Connect "Timesheet - Consultant" to "Timesheet - Week" & "Timesheet - UserProjects", then connect "Timesheet - Week" to "Timesheet - BookTime" web part.
6.> Create another page called "Timesheet Add or Edit" i.e. "Timesheet-Add-or-Edit.aspx" (set in the web.config) and add the "Timesheet - BookTimeItem" web part to the page.
7.> Add the Admin screens by:
7.1.> Create a new page named "Timesheet Admin Main", add the following web part to the page "Admin Main".
7.2.> Create a new page named "Timesheet Admin Client", add the web part "Admin - Client" to the page.
7.3.> Create a new page named "Timesheet Admin Project", add the web part "Admin - Project" to the page.
7.4.> Create a new page named "Timesheet Admin Project Resources", add the web part "Admin Resource Allocation" to the page.

Part 1 - Design & data storage
Part 2 - Building the UI
Part 3 - Installation Steps  (This blog post)
Part 4 - Final Part

65 comments:

Anonymous said...

Hi Paul - nice solutions, do you have any more information about how to add extra fields.

Paul Beck said...

You need to peform the following actions to add/ammend additional fields:
1.> Edit the timesheet database;
2.> Regenerate the LINQ to SQL classes (done via VS by selecting the item template)
3.> Ammend the UI (web parts)
4.> Rebuild and deploy the solution (wsp)

Anonymous said...

Hi Paul,

I've deployed your solution on my server, but the timesheet-add-or-edit.aspx page gives errors. Also when i go to the timesheets page, i can't see any users, or select one. Creating clients and project is going fine, but the other things gives errors. Do you have a hint for me, thanks in advance. Greetings George.

Paul Beck said...

Hi George thanks for the feedback. What error are you getting on the timesheet-add-or-edit.aspx? If you could provide the steps you do to get the error and the error message I should be able to help you.

It's weird that some functions work but not others. Only thing I can guess at is you don't have the correct seed data? Check you have resources and they are assigned to projects? Kind of guessing here but you error message will give me more info.

thanks
paul

Anonymous said...

Hi Paul,

I've solved the problems, i needed resources. The person who is reviewing, should also be connected to the project. It is working fine now. I'm now trying to create a planning tool based on this, then it is complete. Time registration and planning combined. Greetings George.

Paul Beck said...

@George: Glad you worked this out. Drop me some info with your findings of adding the planning functionality if you get a chance.

Anonymous said...

Hi Paul

could this timesheet be used to pull specific "data" from TFS2010?

Thanks Andy

Paul Beck said...

Hi Andy,

It would be a sixable change to grab TFS users data and prepopulate the timesheet application, but it is possible. The hardest task would be gettting the users TFS time data, see

http://archive.msdn.microsoft.com/TfsSdk/

http://blogs.msdn.com/b/granth/archive/2010/01/12/tfs2010-invoking-tfs-web-services-using-powershell.aspx

paul

Vizo said...

"7. Edit the web.config files on each Web Front End SP2010 Server (this should be changed to a feature receiver). The connection string below uses windows trusted and will pass through each users Windows identity, it will generally be easier to user a dedicated connection string account as it saves on SQL Server permions being required for each user."

Kinda new to sharepoint and am trying to get this to work I dont understand point 7 I see a couple of web.config files on the front end which one are you saying to edit?

Paul Beck said...

The web.config you are interested in is the one under IIS 7.

Open IIS find your web application > Explorer (Windows Explorer) and this is your web.config, I think hte default is c:\inetpub\wss\youapp.

If you have any issues getting this step to work send me you web.config connection string entry and any related issue.

Hope that clears up thie step for you.

Paul Beck said...

If you look at the database entity relationship diagram (ERD) you will see 7 tables. SharePoint lists and queries using CAML are not great at querrying multiple tables. Additionally, transactions are not supported when using SharePoint as your data storage.
Due to the nature of the application, SQL server makes a better storage candidate over SharEpoint lists.

You can use SharEPoint lists and use LINQ to SharePoint, it will still work with minimal changes.

Anonymous said...

Hi Paul,

I am new to this environment.Please help me ,I am using the WSP here .Every thing went on fine till step 7. i am struck at step 7 (near Web config file).You want e to add the above statements in the tag.

Its givn as (To complete your setup you need to configure your timesheet application per part 4 - Seed data & page creation.)
please guide me where do i get this stuff.


once more doubt how will i be able to start using the application.
Please provide me the information of the above requested.

Thanks In Advance,

Regards,
Subha

Paul Beck said...

Hi Subha,

To implement this solution you will need to have some understanding of SharePoint. Changing the web.configs is something a .net developer or a SharePoint admin can help you with. The timesheet is not a supported production application for SharePoint and the source code can be ammended to suit your business need.

I will need specific instructions if you want help, as I can't follow your comment.

amol said...

I get following error when i build and deploy the zip through Visual Studio Can u suggest me solution for this

Error occurred in deployment step 'Recycle IIS Application Pool': The vssphost4.exe process was unable to start due to an unknown error or problem.

Paul Beck said...

Hi Amol,

Check if the VSSPHOST4 service is running?
Also try:
Close and open VS2010.
a reboot on your dev machine?

vijay said...

Hi,

When i add the book time item i got the error
of "Sequence contains no elements".how to solve this.

Paul Beck said...

Hi Vijay,

The error means that you are tryin to work with a seqence of element but you don't have 1.

To Fix: Debugthe code in VS and use appropriate logic to stop the error or trap the error. This won't occur if you have seed data and the web parts are correctly linked.

Have a look at:
http://msmvps.com/blogs/kevinmcneish/archive/2009/12/17/fixing-linq-error-sequence-contains-no-elements.aspx
http://techbrij.com/827/sequence-contains-no-elements-linq-lambda-error

Ram said...

hi paul beck

thanks for share such nice code and step to impliment it.

need help on step you had mentioned about
5.> Connect "Consultant" to "Week" & "UserProjects", then connect "Week" to "BookTime" web part.

how this is done. not able to find way to connect it .

Paul Beck said...

Hi Ram,

On the page containing the web parts, in edit mode (edit page), if you click on the arrow drop down on the web part, you will see the option for connections. Hook the appropriate connection up.

Anonymous said...

Hi Paul,

Very nice solution. Keep on going!

Anonymous said...

Paul,

I stuck at Step: 7. Some how not able to locate web.config file. Could you please help me the location for the same & area where I need to make changes.

I have Sharepoint Foundation 2010.


Sachin
E:mail: sachinsant@sungrace-group.com

Ibrahim Cisse said...

@ Sachin.
The general path for the SharePoint web.comfig is: "C:\inetpub\wwwroot\wss\VirtualDirectories\80". At the Bottom of your web.config right above the closing tag of the "Configuration". You will enter the values of the AppSettings.

I hope this helps...

Ibrahim Cisse said...

Hello Paul. In the Timesheet - bookTimeItem you have: Project, Week, Day, Notes, Time. The Week has no value, I looked into the code and lblWeek was never assigned a value. And also I would like to modify the Consultant WebPart so that another user that has "Full Control" permission can access the Drop-down. Currently you have to add the user to the site collection administrator.
thanks..

Anonymous said...

Enable-SPFeature ?Identity timesheet_timesheets url http://
xx1x.com
Enable-SPFeature : A positional parameter cannot be found that accepts argument
'timesheet_timesheets'.
At line:1 char:17
+ Enable-SPFeature <<<< ?Identity timesheet_timesheets ?url http://xx1x.com

+ CategoryInfo : InvalidArgument: (:) [Enable-SPFeature], Paramet
erBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.SharePoint
.PowerShell.SPCmdletEnableFeature

Ebeid Soliman said...

Hi,
Thanks for the code. I'm beginner in sharepoint development. I downloaded the code and deployed it from Visual Studio, then I don't know how to do the following step:

3.> Change the web.config to contain the app setting connection info for timesheets.

Thanks

Paul Beck said...

The web application/IIS instance where you have your SharePoint site running has a web.config file. This is the file you need to change.

Unknown said...

Can this be deployed on a standalone server?

Paul Beck said...

Hi Jonathan,

I presume you mean can this be deployed to a single SharePoint server farm. Yes. Any SP2010 farm on any version of SP will work.

paul

Justin Gatewood said...

You say to 'connect' the web parts.

I am viewing the 'Edit Web Part' interface, and I see "Allow Connections" (it's only a check box), but there is nothing else to choose from, nowhere to enter a 'connection'.

How do you 'connect' one web part to another web part?

Paul Beck said...

Hi Justin,

The web part in edit mode has the option to be linked as show in this image.

http://4.bp.blogspot.com/_IrKw3I1Z-0M/TTbAe53LJHI/AAAAAAAAATM/ZbX_0pjgv3A/s1600/ts-wp-edit.png

Justin Gatewood said...

When I click the drop-down arrow on my "Timesheet - Consultant" web part - the 'Connections' option is not there (even though 'Allow Connections' is checked in the web part options for 'Edit Web Part').

Justin Gatewood said...

I see what I was doing wrong. I was placing the web parts on a 'Page'. I was not placing the web parts on a "Web Part Page" (which allows for additional web part editing/connection options).

Justin Gatewood said...

I've created a new 'web part page' and added the web parts to the page.

I've successfully 'connected' the 'Timesheet-Consultant' web part to the 'Timesheet-Week' web part.

When I attempt to connect the 'Timesheet-Consultant' web part to the 'Timesheet-UserProjects' web part, I get a correlation-ID error, and then I get that same error every time I try to access the new web part page again.

What am I doing wrong?

Paul Beck said...

Hi Justin,

We need to debug the problem and depending on your environment the are diffent options. The 1t thing you need to do is record the correlation id, then open your ULs logs on the sharePoint machine (ULSViewer is a console app that makes viewing the ULS log easier), then note down what the error is.

If this is not a production env you can change the config to show the error and the stack trace. If you have Visual Studio on this envionment the easiest way is to debug. Post the error info if you want more help fixing the bug.

Justin Gatewood said...

Here's the error I get when I try to connect the 'Timesheet-Consultant' web part with the 'Timesheet-UserProjects' web part:

"An unexpected error has occurred. Troubleshoot issues with SharePoint Foundation [link]. Correlation ID: 2d7e0cdb-d2a1-4234-96a8-52fe7d982da6"

When I open the log in Excel and filter on that Correlation ID, I get the following 'Unexpected' item:
//----BEGIN ERROR MSG----//
System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) at System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, SqlConnection owningObject) at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject) at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart) at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance) at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject) at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) at System.Data.SqlClient.SqlConnection.Open() at System.Data.Linq.SqlClient.SqlConnectionManager.UseConnection(IConnectionUser user) at System.Data.Linq.SqlClient.SqlProvider.get_IsSqlCe() at System.Data.Linq.SqlClient.SqlProvider.InitializeProviderMode() at System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query) at System.Data.Linq.DataQuery`1.System.Linq.IQueryProvider.Execute[S](Expression expression) at System.Linq.Queryable.Single[TSource](IQueryable`1 source) at PaulBeck.Timesheet.WebParts.UserProjects.UserProjectsUserControl.DisplayUserProjects()
//----END ERROR MSG----//

What could be causing this issue?

Regards and thanks,

Justin




Paul Beck said...

Hi Justin,

The app is not connecting to SLQ Server, check out you connection string, the details may not be correct. I find using a UDL file easy to checking connectivity (create a text file with the udl extension on any SP machine, open it and fill out your connection details). If udl is working, then check you connection string.

Justin Gatewood said...

How does one check their connection string for an app? SharePoint is working well otherwise, so I'm not sure where to look for this particular information.

Justin Gatewood said...

Hey Paul,

UDL - successful connection test.

What would I be looking for in my connection string?

Is there anything else that could be causing this issue?

Thanks much for all of your help!

Justin

Paul Beck said...

Hi Justin, Sounds like your connection string. Obviously the credentials need to match the udl credentials. Send me the connection string but pls hash/remove the pswrd & change the server names. Check you are using the right port, auth mechanism to start. The app is not connecting to SQL so it looks like a connection issue. Good news is udl proves networking and firwall. Also udl may be getting the port dynamically. Ensure you connection string is using the right port normally 1433.

Justin Gatewood said...

Here's my connection string (according to the dsn in the Registry on the Web Front End):

Data Source=SQLServerHostname;Initial Catalog=ConfigDBName;Integrated Security=True;Enlist=False;Connect Timeout=15

I don't see any credentials in this string in the registry. How do I find my full connection string?

Paul Beck said...

Hi Justin,

You are using a trusted connection string by the looks of it. To confirm, look at step 7 above. This is the connection string you are using to connect to the database (defined in the web.config file). This is the connection string I wanted you to send me.

Step 6 talks about giving db permissions. So in SQL you need to give the account accessing the data permission to get it.

For simplicity I'll give you the steps assuming you are using Windows Authentication on SQL Server: 1) Give the app pool account that is running the IIS sysadmin (just to get it working) rights to the timesheet database in SQL logins.

The trick is to match this string in the web.config with the SQL permissions you give.

UDL can be done using your current logged in credentials or a specified SQLl account. Figure out which account you re using and get your connection string to match this.

me

Justin Gatewood said...

The account running IIS already has 'sysadmin' on the SharePoint SQL server.

Could there be another issue?

Paul Beck said...

From the info it looks like a connection issue - we know it isn't networking proven by the succesful udl test.

You connection string needs to match you udl settings to make sure it is working. I would change the connection string in the web.config until it works.

Only other issue I can think of would be SQL is using dynamic ports and your connection string is using a fixed port.

follow me on twitter @paulbeck1 and I'll direct message you so you can get your issue resolved.

Unknown said...

Hi Paul,
Thanks for such a wonderful write up. Where is the location of web.config file? I think there are different web.config files, which one to edit.

Paul Beck said...

Hi Pranay,

The web.config file is the 1 used by your SP site. It is under the inetpub folder by default. Use IIS and you can see the web.config for your SP site.

Tevfik Binen said...

Hi Paul,

Would you mind giving me some info about how to insert timesheets also backwards which are also missing ? How can I create appropriote entries for the backward missing dates ?

Thanks!

Paul Beck said...

Hi Tevfik,

Everything is SL driven so you just import the data into SL if you want historic data. If you are looking for the ability to go back more than 10 weeks, you will need to create the weeks and change the web.config to more than 10 weeks to display.

Unknown said...
This comment has been removed by the author.
Paul Beck said...

Hi Balakrishna,

Create a udl file (create a text file and rename the extension .udl) and open it, make sure you can connect so you are using the correct credentials. Then amend you connection string.

Unknown said...
This comment has been removed by the author.
Paul Beck said...

Krisna,

You are using trusted trusted/integrated security, the credentials of the process you are running in are being used to access the SL database. In your case this is the username that is running the app pool (IIS has an app pool tied to it), the account in the app pool does not have access to the database.

To fix ensure the account in the app pool has permissions to SQL.

I have given a fair amount of detail as I am not sure what level your understanding is at.

Anonymous said...

Paul this looks interesting and promising, I'm a little new to SharePoint, I'm having trouble getting it to install, can you answer a couple questions:

#1) when modifying the web.config, where in the file should that "appsettings" block go? I got the server to respond when I put the block in the section, but I can't tell if that is correct.

#2) I can add some "Web Parts" but as soon as I do the server responds with a "Sorry, something went wrong, an unexpected error has occurred" and there is no help available. Any idea where I could look for an error log? I suspect it can't talk to the database, but that is just a guess, I'd love to see the error in a log somewhere.

Thank you,
Matt

Paul Beck said...

Hi Matt,

1.> The appSettings element should already be in your web.config file. In IIS > Explorer, Open the web.config and do a Find for "appSet".
2.> You have 2 choices, using the correlation Id, go into the ULS logs and trace the error message or enable debugging on the page as shown in this post http://blog.sharepointsite.co.uk/2010/07/custom-error-and-call-stack-info-is-not.html

Get the log messages and come back to me if you can't figure out where you are going wrong.

Anonymous said...

Thank you Paul, it's working now. I was a little confused as there were four "appsettings" blocks already there, and making another one didn't seem to help. For clarity for others reading this post, I added the new lines to the "appsettings" block toward the bottom of the file, it is a direct child of the "configuration" tag.

I was able to add a client and see it show up in the database, so it looks good so far. I'll do some playing around and if I have any other questions I'll let you know. Thank you, by the way, for contributing to the community .

Unknown said...

unable to download PaulB-Timesheet.wsp ,Please help

Paul Beck said...

Hi Manju, it works for me!

paul

Unknown said...

after downloading i deployed the .wsp file in farm successfully.

while activating (solution Gallery->Solution)i am facing below error pls guide

This solution contains invalid markup or elements that cannot be deployed as part of a sandboxed solution. Solution manifest for solution 'a6a1a854-ae0d-4c23-82f6-de4f37c8f797' failed validation, file manifest.xml, line 2, character 110: The 'ResetWebServer' attribute is not declared.

Unknown said...

Hi Paul,

I am getting the below error while trying to add the webparts, could you please shed some light on this.

Value cannot be null.
Parameter name: fileOrServerOrConnection
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.ArgumentNullException: Value cannot be null.
Parameter name: fileOrServerOrConnection

Source Error:


An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:



[ArgumentNullException: Value cannot be null.
Parameter name: fileOrServerOrConnection]
System.Data.Linq.DataContext..ctor(String fileOrServerOrConnection, MappingSource mapping) +1586268
PaulBeck.Timesheet.TSDBDataContext..ctor(String connection) +41
PaulBeck.Timesheet.WebParts.Admin.EditProject.EditProjectUserControl.Page_Load(Object sender, EventArgs e) +352
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +25
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +42
System.Web.UI.Control.OnLoad(EventArgs e) +132
System.Web.UI.Control.LoadRecursive() +66
System.Web.UI.Control.AddedControl(Control control, Int32 index) +350
PaulBeck.Timesheet.WebParts.Admin.EditProject.EditProject.CreateChildControls() +72
System.Web.UI.Control.EnsureChildControls() +146
System.Web.UI.Control.PreRenderRecursiveInternal() +61
System.Web.UI.Control.PreRenderRecursiveInternal() +224
System.Web.UI.Control.PreRenderRecursiveInternal() +224
System.Web.UI.Control.PreRenderRecursiveInternal() +224
System.Web.UI.Control.PreRenderRecursiveInternal() +224
System.Web.UI.Control.PreRenderRecursiveInternal() +224
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3394

Thanks!

Paul Beck said...

Check you connection string. http://msdn.microsoft.com/en-us/library/bb350721(v=vs.110).aspx

Unknown said...

Hi Paul
please advise on what should i change on the solution if i want to upgrade to sharepoint 2013

Paul Beck said...

Flabstar,

It will work on SP2013 on-prem. 1) Do you have the timesheet running on SP2010 and want to upgrade or 2) are you asking for SP2013 are there any changes.

1) Assuming that you were using claims auth and not classic in SP2010 then the upgrade (ony 1 approach to SP2013) will work. You need the WSP's and the existing SQL timesheet database will continue to be used.
2) No problem it all works on SP2013

Unknown said...

Hi Paul

I have managed to modify the web.config file and now when connecting web parts i get the error "user does not have permission to perform this action". I have spend the last week troubleshooting.

Unknown said...

Hi Paul

I have managed to modify the web.config file and now when connecting web parts i get the error "user does not have permission to perform this action". I have spend the last week troubleshooting.

Paul Beck said...

Hi Ifshaan,

Make the account you are logging in with a site collection administrator or site owner. It sounds like the SP user account you are using does not have sufficient permission.

Unknown said...

hi paul all web parts are connected, connection to sql database succeeds, but have no information in my web parts.

Post a Comment